SCP + 如何避免复制到远程机器上已有相同文件名的文件?

3
有没有选项可以告诉scp命令-如果远程机器上存在文件,则不要从当前机器复制文件?
例如:
在我的机器上,我有这个文件 -
/etc/secret-pw.txt

在远程计算机上,我也有这个文件 -
/etc/secret-pw.txt

所以
scp /etc/secret-pw.txt $remote_machine:/etc

将会删除secret-pw.txt,scp不会询问关于覆盖目标文件的问题。

有没有选项可以避免scp复制到目标机器上已存在的文件?

更新:我不能安装rsync或任何其他程序。


在我的 Bash 脚本和 Expect 脚本中,我使用 scp 命令来在不同机器之间复制文件。 - maihabunash
你的两端都有GNU tar吗? - Cyrus
关于tar命令,我猜是的。 - maihabunash
2个回答

1
你应该使用rsync而不是scp。这将给你所需的内容。
如果你不能安装rsync(如你在评论中提到的),你需要先运行一个脚本来检查文件是否存在并使用ssh运行它。

我在我的Linux系统上没有安装rsync,并且由于一些内部问题,我无法安装该命令。 - maihabunash
你能使用Unison吗? - asimovwasright

0

很遗憾,SCP没有提供任何选项。

但是你可以使用标准工具,比如这个:

ssh $remote_machine -- cp --no-clobber /dev/stdin /etc/secret-pw.txt < /etc/secret-pw.txt

请注意,使用这个技巧可以获得cp的所有功能。

ssh $remote_machine -- cp --no-clobber /dev/stdin /etc/secret-pw.txt < /etc/secret-pw.txt - Cyrus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接