AIX コピー時にディレクトリを作成する

AIX コピー時にディレクトリを作成する

AIX でファイルをコピーするときに存在しないディレクトリを作成する最適な方法は何ですか? 次のようになります:

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

~user2/ ディレクトリは存在しますが、~user2/bin ディレクトリは存在しません。

答え1

1 つの可能性としては、tar パイプラインを使用することです。

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

これはサブシェルを使用してソースの場所の親ディレクトリに変更し、次にtar「log」ディレクトリのアーカイブを stdout に書き込むように指示します。2 番目のサブシェルは宛先の親ディレクトリに変更し、次にtarパイプの stdin 経由で送られてくるアーカイブを抽出するように指示します。コマンドtarは と連鎖され、&&対応するコマンドが成功した場合にのみ実行されますcd

これをテストするには、2 番目に、tar受信したコンテンツを単に印刷するように指示します。-xを に変更するだけです。 with を-t使用しても問題はありませんし、害もありません。-p-t

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

関連情報