在 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
一种可能性是使用 tar 管道:
(cd ~user1/ && tar -c -p -f - bin/log) | (cd ~user2/ && tar -x -p -f -)
这使用子 shell 更改到源位置的父目录,然后告诉tar
将“log”目录的存档写入标准输出。第二个子 shell 更改为目标的父目录,然后指示tar
提取通过管道的标准输入传入的存档。这些tar
命令被链接起来,&&
仅当相应的命令成功时才执行cd
。
您可以通过告诉第二个tar
简单地打印传入内容来测试这一点;只需将 更改-x
为-t
。使用-p
with-t
并不重要,也不会造成伤害:
(cd ~user1/ && tar -c -p -f - bin/log) | (cd ~user2/ && tar -t -p -f -)