-
Notifications
You must be signed in to change notification settings - Fork 5
Description
Description
The zopen version of the cp command behaves differently from the standard z/OS /bin/cp when performing recursive copies with a trailing slash on the source directory. The zopen version creates an extra layer of directory structure, nesting the source directory inside the destination, while the standard /bin/cp copies the contents directly into the destination.
Test Setup
Initial directory structure:
/u/myuser/ZOPEN-TST/
├── binCopy/ (empty destination for /bin/cp test)
├── copyFrom/ (source directory)
│ ├── firstFile
│ ├── secondFile
│ ├── firstDir/
│ └── secondDir/
│ └── thirdFile
└── zopenCopy/ (empty destination for zopen cp test)
Reproduction Steps
-
Test with standard
/bin/cp:/bin/cp -R copyFrom/ binCopy
-
Test with zopen
cp:/u/myuser/zopen/usr/local/altbin/cp -R copyFrom/ zopenCopy
Expected Behavior (Standard /bin/cp)
The contents of copyFrom/ are copied directly into binCopy/:
binCopy/
├── firstFile
├── secondFile
├── firstDir/
└── secondDir/
└── thirdFile
Verification with ls -l binCopy/*:
-rw------- 1 MYUSER TSOUSER 0 Feb 18 15:53 binCopy/firstFile
-rw------- 1 MYUSER TSOUSER 0 Feb 18 15:53 binCopy/secondFile
binCopy/firstDir:
total 0
binCopy/secondDir:
total 0
-rw------- 1 MYUSER TSOUSER 0 Feb 18 15:53 thirdFile
Actual Behavior (zopen cp)
An extra directory layer is created - the entire copyFrom directory is nested inside zopenCopy/:
zopenCopy/
└── copyFrom/ ← Extra directory layer
├── firstFile
├── secondFile
├── firstDir/
└── secondDir/
└── thirdFile
Verification with ls -l zopenCopy/*:
total 4
drwx------ 2 MYUSER TSOUSER 0 Feb 18 15:54 firstDir
-rw------- 1 MYUSER TSOUSER 0 Feb 18 15:54 firstFile
drwx------ 2 MYUSER TSOUSER 8192 Feb 18 15:54 secondDir
-rw------- 1 MYUSER TSOUSER 0 Feb 18 15:54 secondFile
Note: The ls output shows files and directories at the root of zopenCopy/, but this is misleading - these are actually inside a copyFrom/ subdirectory that was created by the zopen cp command. This demonstrates the key difference: /bin/cp places content directly in the destination, while zopen cp creates an extra directory layer.
Verification with ls -l zopenCopy/:
total 4
drwx------ 4 MYUSER TSOUSER 8192 Feb 18 15:54 copyFrom