我正在尝试通过将新生成的文件添加到远程服务器来设置 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 次 |
最近记录: |