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预览操作,避免误覆盖。 - 跨平台同步时,确认文件系统对时间戳的支持粒度。