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, tar
ein Archiv des Verzeichnisses „log“ in stdout zu schreiben. Die zweite Subshell wechselt in das übergeordnete Verzeichnis des Ziels und weist dann an, tar
das Archiv zu extrahieren, das über den stdin der Pipe kommt. Die tar
Befehle werden verkettet, um &&
nur ausgeführt zu werden, wenn der entsprechende cd
Befehl erfolgreich ist.
Sie können dies testen, indem Sie dem zweiten sagen, tar
dass er einfach den eingehenden Inhalt drucken soll; ändern Sie einfach -x
in -t
. Die Verwendung -p
von with -t
ist egal und schadet nicht:
(cd ~user1/ && tar -c -p -f - bin/log) | (cd ~user2/ && tar -t -p -f -)