我在用着
rsync . $HOST:$PATH --itemize-changes --verbose --human-readable --times --checksum --recursive --delete --delete-excluded --force --filter='dir-merge .rsync-filter'
看起来.rsync-filter
像这样:
exclude .gitinstructions
exclude .gitignore
exclude .rsync-filter
exclude .gitlab-ci.yml
exclude .git
exclude timestamp.txt
exclude var
exclude LICENSE.html
exclude LICENSE.txt
exclude LICENSE_AFL.txt
exclude RELEASE_NOTES.txt
exclude config.json
protect media/**/*
尽管在远程,媒体文件夹正在被删除:
$ rsync . $SSH_HOST:$SSH_STAGEPATH --itemize-changes --verbose --human-readable --times --checksum --recursive --delete --delete-excluded --force --filter='dir-merge .rsync-filter' 发送增量文件列表 .d..t...... ./ *删除媒体/测试 *删除媒体/
发送 680.12K 字节 接收 28.00K 字节 472.08K 字节/秒 总大小为 139.20M 加速比为 196.58
我是否遗漏了什么?我基本上希望所有“排除的文件/目录”不上传,而是在远程删除,并且“受保护的文件/目录”不上传也不删除。我确信我遵循了手册页中的正确语法。
答案1
你能确认问题仍然存在吗?
protect media/**/*
在你的顶部.rsync-filter
?
在你的例子中,它位于过滤器的底部。
来自rsync 手册页:
请注意,如果您提供自己的过滤规则,则可能需要手动在列表的更高位置插入自己的排除/保护规则,以便它具有足够高的优先级才能有效(例如,如果您的规则指定了 oq*cq 的尾随包含/排除,则永远不会达到自动添加的规则)。