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 的所有功能。