rsync 的 --times
(或 -t
)选项用于同步文件的修改时间(mtime),确保目标文件的时间戳与源文件一致。以下是实践经验和挑战的详细说明:
使用方法
基础命令:rsync -t [其他选项] 源路径 目标路径
。通常结合 -a
(归档模式,已包含 -t
)使用,例如:
rsync -avt /local/source/ user@remote:/remote/destination/
实践经验
- 增量备份优化:若文件内容未变但时间戳更新,
-t
仅同步时间戳,避免重复传输内容,节省带宽。 - 依赖时间戳的场景:适用于需保留编译时间、日志轮转等场景,确保目标环境行为一致。
- 权限与所有权:时间戳同步需目标文件可写,若权限不足(如
root
创建的文件),需搭配--chmod
或--no-perms
处理。
挑战与解决
- 时区差异:若源/目标系统时区不同,时间戳显示值可能不同(但 UTC 时间一致),需确认时区配置。
- 时间精度丢失:部分文件系统(如 FAT32)仅支持秒级时间戳,同步后可能存在误差。
- 元数据冲突:若同时使用
--checksum
(校验文件内容),可能因时间戳不同触发冗余传输,需权衡参数组合。 - 只读目标限制:目标路径若为只读(如 CD-ROM),
-t
会失败,需移除该选项或调整写入权限。
验证方法
同步后可通过 ls -l
或 stat
检查时间戳,例如:
stat -c '%y' filename # 查看文件修改时间
最佳实践
- 优先使用
-a
而非单独-t
,以保留权限、所有权等属性。 - 测试时添加
--dry-run
预览操作,避免误覆盖。 - 跨平台同步时,确认文件系统对时间戳的支持粒度。