scp + 如果相同的文件名位于远程机器上,避免复制?
scp + Avoid copy if the same file name located on remote machine?
是否有任何选项可以告诉 scp 命令 - 如果远程机器上存在文件,则不从当前机器复制文件
例如
在我的机器上我有文件 -
/etc/secret-pw.txt
在远程机器上我也有文件 -
/etc/secret-pw.txt
所以
scp /etc/secret-pw.txt $remote_machine:/etc
会破坏secret-pw.txt,并且scp不会询问:覆盖目标文件
如果目标计算机上存在文件,是否有任何选项可以避免通过 scp 进行复制?
更新:我无法安装 rsync 或任何其他程序。
您应该使用 rsync
而不是 scp
。它会给你你所需要的。
如果您无法安装 rsync
(正如您在评论中提到的),您需要预先 运行 一个脚本来检查文件是否存在,然后 运行 使用 ssh
.
不幸的是,SCP 不提供任何选项。
但您可以使用标准工具,如下所示:
ssh $remote_machine -- cp --no-clobber /dev/stdin /etc/secret-pw.txt < /etc/secret-pw.txt
请注意,通过此技巧,您可以获得 cp
的所有功能。
是否有任何选项可以告诉 scp 命令 - 如果远程机器上存在文件,则不从当前机器复制文件
例如
在我的机器上我有文件 -
/etc/secret-pw.txt
在远程机器上我也有文件 -
/etc/secret-pw.txt
所以
scp /etc/secret-pw.txt $remote_machine:/etc
会破坏secret-pw.txt,并且scp不会询问:覆盖目标文件
如果目标计算机上存在文件,是否有任何选项可以避免通过 scp 进行复制?
更新:我无法安装 rsync 或任何其他程序。
您应该使用 rsync
而不是 scp
。它会给你你所需要的。
如果您无法安装 rsync
(正如您在评论中提到的),您需要预先 运行 一个脚本来检查文件是否存在,然后 运行 使用 ssh
.
不幸的是,SCP 不提供任何选项。
但您可以使用标准工具,如下所示:
ssh $remote_machine -- cp --no-clobber /dev/stdin /etc/secret-pw.txt < /etc/secret-pw.txt
请注意,通过此技巧,您可以获得 cp
的所有功能。