使用rsync从Mac Sonoma复制到ExFAT TerraMaster DAS时时间戳异常求助
rsync在Mac Sonoma下复制到ExFAT外接硬盘无法保留创建时间的问题
问题根源
ExFAT文件系统本身不支持Mac系统的「创建时间(Birth Time)」元数据字段,仅支持修改时间。Mac本地的APFS/HFS+文件系统有专门字段存储创建时间,但ExFAT的设计以跨平台兼容为核心,没有对应项,所以rsync无法将原始创建时间写入ExFAT磁盘——这是文件系统的固有限制,和rsync版本、sudo权限无关。
两次rsync的现象解释
- 首次执行
rsync -t时,文件是在ExFAT盘上全新创建的,系统会自动将当前时间设为该文件在ExFAT上的创建时间,同时因为首次复制未同步修改时间,所以修改时间也显示为当前; - 再次执行
rsync -t时,rsync会同步原始文件的修改时间(ExFAT支持该字段),但ExFAT的创建时间是文件首次写入磁盘的时间,无法通过rsync修改,所以仍显示首次复制的时间。
解决方案与补救方法
文件系统格式替换(彻底解决)
如果不需要Windows跨平台兼容,将外接盘格式化为APFS格式,这样就能完整保留Mac的所有元数据(包括创建时间),rsync的-a参数可以正常工作。无需重复复制的补救(针对已复制文件)
由于ExFAT本身不支持创建时间,无法真正恢复原始创建时间,但可以通过以下方法将修改时间同步为原始创建时间(仅作替代):- 先在本地源目录导出所有文件的创建时间:
find /本地源路径 -type f -exec stat -f "%N %B" {} \; > ctimelist.txt - 在外接盘目标目录批量同步时间:
while read -r src_file ctime; do dest_file="/外接盘目标路径/$(basename "$src_file")" touch -t "$(date -r "$ctime" +%Y%m%d%H%M.%S)" "$dest_file" done < ctimelist.txt
注意:此操作仅修改文件的修改时间为原始创建时间,无法改变ExFAT上的创建时间字段。
- 先在本地源目录导出所有文件的创建时间:
替代工具(适合一次性复制)
使用Mac自带的ditto命令,它会尽可能模拟保留元数据,在ExFAT上复制时会将原始创建时间写入修改时间字段:ditto -V /本地源路径 /外接盘目标路径
内容的提问来源于stack exchange,提问作者Marco.28
相关产品推荐
相关产品推荐

