AIX erstellt Verzeichnis beim Kopieren

AIX erstellt Verzeichnis beim Kopieren

Wie kann ich beim Kopieren von Dateien in AIX am besten ein Verzeichnis erstellen, das nicht existiert? Etwa so:

ssh server1 'cp -R ~user1/bin/log ~user2/bin/log'
cp: /u/user2/bin/log: No such file or directory
ssh server1 'cp -r ~user1/bin/log ~user2/bin/log'
cp: /u/user2/bin/log: No such file or directory

Das Verzeichnis ~user2/ existiert, aber nicht das Verzeichnis ~user2/bin.

Antwort1

Eine Möglichkeit wäre die Verwendung einer Tar-Pipeline:

(cd ~user1/ && tar -c -p -f - bin/log) | (cd ~user2/ && tar -x -p -f -)

Dabei wird eine Subshell verwendet, um in das übergeordnete Verzeichnis des Quellspeicherorts zu wechseln, und dann wird angewiesen, tarein Archiv des Verzeichnisses „log“ in stdout zu schreiben. Die zweite Subshell wechselt in das übergeordnete Verzeichnis des Ziels und weist dann an, tardas Archiv zu extrahieren, das über den stdin der Pipe kommt. Die tarBefehle werden verkettet, um &&nur ausgeführt zu werden, wenn der entsprechende cdBefehl erfolgreich ist.

Sie können dies testen, indem Sie dem zweiten sagen, tardass er einfach den eingehenden Inhalt drucken soll; ändern Sie einfach -xin -t. Die Verwendung -pvon with -tist egal und schadet nicht:

(cd ~user1/ && tar -c -p -f - bin/log) | (cd ~user2/ && tar -t -p -f -)

verwandte Informationen