我正在尝试通过将新生成的文件添加到远程服务器来设置 rsync 以将我的主 Web 服务器同步到远程服务器。
这是我使用的命令:
rsync -avh --update -e "ssh -i /path/to/thishost-rsync-key" remoteuser@remotehost:/foo/bar /foo/bar
Run Code Online (Sandbox Code Playgroud)
但似乎网络服务器实际上传输了所有文件,尽管有“--update”标志。我尝试了不同的标志组合(例如省略“-a”并使用“-uv”),但没有任何帮助。如何修改 rsync 命令以仅发送新添加的文件?
Chr*_*own 252
来自man rsync:
--ignore-existing skip updating files that exist on receiver
Run Code Online (Sandbox Code Playgroud)
--update做了一些稍微不同的事情,这可能就是为什么您会得到意想不到的结果(请参阅 参考资料man rsync):
这会强制 rsync 跳过目标上存在且修改时间比源文件更新的任何文件。(如果现有目标文件的修改时间与源文件的修改时间相同,则如果大小不同,它将被更新。)
t0r*_*r0X 57
就我而言,我遇到了类似的问题,传输了所有文件,而不仅仅是修改后的/新文件。我通过使用参数-t(而不是-a)和-P(相当于--partial --progress)解决了这个问题:
rsync -h -v -r -P -t源 目标
这仅传输新文件和已存在但已修改的文件:-a做太多,如用户和组 ID 同步,在我的情况下无法工作,因为我的源和目标系统上有不同的用户和组。
详细参数:
-h: 人类可读的数字-v: 冗长 -r: 递归到目录 -P:(--partial保留部分传输的文件)+ --progress(传输过程中显示进度)-t: 保留修改时间| 归档时间: |
|
| 查看次数: |
332653 次 |
| 最近记录: |