我正在使用出现错误的scp命令将数百个文件复制到另一台计算机。现在我要再次复制文件。有没有办法避免复制已经复制的文件?stalled
小智 59
你可以用rsync它。rsync确实是为这种类型的操作而设计的。
句法:
rsync -avh /source/path/ host:/destination/path
Run Code Online (Sandbox Code Playgroud)
或者
rsync -a --ignore-existing /local/directory/ host:/remote/directory/
Run Code Online (Sandbox Code Playgroud)
当您第一次运行它时,它会复制所有内容,然后只会复制新文件。
如果您需要通过 SSH 连接隧道传输流量(例如,出于保密目的),正如您最初要求基于 SCP 的解决方案所指出的那样,只需将-e ssh参数添加到rsync. 例如:
rsync -avh -e ssh /source/path/ host:/destination/path
Run Code Online (Sandbox Code Playgroud)
小智 8
如果您出于任何原因想坚持使用 scp,您可能会删除对本地数据的w权限(如果您有权这样做)并且 scp 不会触及它。更准确地说:
chmod a-w local/*.tar.gz (在您的本地目录中)scp remote/*.tar.gz local这不是很有效,很好,但如果您需要一个快速的临时解决方案而无需更改为 scp 以外的其他内容,则可能会有所帮助。(荣誉:scp 没有替换目标中的现有文件)
小智 6
没有关于如何用 SCP 做到这一点的确切答案,因为这是最初的问题所问的。
sudo find /files/ -type f -exec chmod a-w {} \;
scp -r username@server.com:/file/location/* /files
完成复制文件后,将权限更改回:
sudo chmod a+w -R /files