Answers:
您可以使用rsync
它。rsync
确实是针对此类操作而设计的。
句法:
rsync -avh /source/path/ host:/destination/path
要么
rsync -a --ignore-existing /local/directory/ host:/remote/directory/
首次运行时,它将复制所有内容,然后仅复制新文件。
如您最初要求基于SCP的解决方案所指示的,如果您需要通过SSH连接(例如,出于保密目的)通过隧道传输流量,则只需将-e ssh
参数添加到中rsync
。例如:
rsync -avh -e ssh /source/path/ host:/destination/path
rsync -t *.c foo:src/
->“这会将所有与* .c模式匹配的文件从当前目录传输到机器foo上的目录src。如果远程系统上已经存在任何文件,则rsync remote-更新协议用于通过仅发送差异来更新文件 “
rsync -avuzh /source/path/ host:/destination/path
。这样就可以在一个命令中完成整个工作,并且在随后的调用中,仅传输需要它的文件。
如果出于任何原因要坚持使用scp,则可以删除本地数据上的w权限(如果您有权这样做),而scp不会碰它。更准确地说:
chmod a-w local/*.tar.gz
(在您的本地目录中)scp remote/*.tar.gz local
这不是很有效,很好,但是如果您需要快速的临时解决方案而不更改为scp以外的其他方法,则可能会有所帮助。(荣誉:scp而不替换目标中的现有文件)
关于如何使用SCP进行此操作没有确切的答案,因为这就是最初的问题。
sudo find /files/ -type f -exec chmod a-w {} \;
scp -r username@server.com:/file/location/* /files
复制完文件后,将权限改回来:
sudo chmod a+w -R /files
--ignore-existing
真的需要?