我已经镜像了 100 GiB 的文件。在我的镜像上,一些时间戳和文件权限可能是错误的。我想使用 rsync 来解决这个问题。
我下载的服务器有超过 100 GiB 的文件。我的镜像镜像某些文件从每个源目录。它不镜像整个目录。
如何告诉 rsync 修复我的时间戳和文件权限,而无需重新下载 100 GiB?
供参考,我现在正在尝试rsync -av --list-only HOST::MODULE >/tmp/list.txt
。一旦我获取了这些数据,如果你们都不能告诉我更好的答案,我将编写一个脚本来根据数据触摸我的每个文件。
但是就没有更简洁的方法来完成这项工作吗?
(有这个问题,但它似乎没有回答我的需要。)
答案1
如果您的源和目标位于不同的系统上,并且rsync
客户端与服务器(任何类型)通信rsync
,则权限和时间戳将在不传输数据内容的情况下更新。例如:
rsync -avP --existing server:/path/to/source /path/to/target
rsync -avP --existing server::module /path/to/target
另一方面,如果您的源和目标由同一个rsync
进程管理,例如当服务器的文件系统可通过 NFS 访问时,则没有有效的方法可以确认这两种情况下的数据相同,因此它会放弃它的快捷方式,只需使用更正的权限和时间戳重新复制数据。例如:
rsync -avP --existing /path/to/server/source /path/to/target
如果您遇到第二种情况并且您是绝对确定如果文件内容相同,有一个解决方法将强制rsync
假设内容相同 - 即使其“快速检查”失败 - 并且只更新权限和时间戳:
rsync -avP --existing --size-only /path/to/server/source /path/to/target
该--existing
标志确保不会在目标位置创建新文件,但会适当更新现有文件。该--size-only
标志强制rsync
忽略时间戳。