![使用 rsync 保留目录/文件夹上的修改日期](https://linux22.com/image/76616/%E4%BD%BF%E7%94%A8%20rsync%20%E4%BF%9D%E7%95%99%E7%9B%AE%E5%BD%95%2F%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%8A%E7%9A%84%E4%BF%AE%E6%94%B9%E6%97%A5%E6%9C%9F.png)
我正在尝试备份出现故障的硬盘,rsync 是理想的选择,因为它具有进度指示器以及停止和恢复功能等功能。我遇到的一个问题是,虽然保留文件日期修改属性,但目录获得新的日期属性。这会导致问题,因为我按日期对许多文件进行排序,以便我知道最近添加的内容。是否可以使用 rsync 保留目录日期修改属性:
sudo rsync -avhX --progress --info=progress2 /mnt/failing/ /mnt/new/
-t(包含在 -a 中)选项保留文件属性,但不提及目录。为了成功保留某些属性,/mnt/new 分区的所有权/权限是否有任何特殊要求?
答案1
目录的最后修改时间由 保存-a
,但只有在 rsync 完成后才能看到。它不会尝试为不断更新新文件的目录设置时间。
你可以自己测试一下。创建一个目录并将其日期设置为昨天,然后使用 rsync 复制它:
$ mkdir d1 d2
$ ls -ld d1
drwxr-xr-x 2 40 Nov 4 14:41 d1
$ touch -d 'yesterday' d1
$ ls -ld d1
drwxr-xr-x 2 40 Nov 3 14:41 d1
$ rsync -i -avR d1 d2
$ ls -ld d1 d2/d1/
drwxr-xr-x 2 40 Nov 3 14:41 d1
drwxr-xr-x 2 40 Nov 3 14:41 d2/d1/
d2/d1 目录有昨天的日期。我们可以覆盖它并查看 rsync 是否修复了问题:
$ touch d2/d1
$ ls -ld d1 d2/d1/
drwxr-xr-x 2 40 Nov 3 14:41 d1
drwxr-xr-x 2 40 Nov 4 14:42 d2/d1/
$ rsync -i -avR d1 d2
.d..t...... d1/
$ ls -ld d1 d2/d1/
drwxr-xr-x 2 40 Nov 3 14:41 d1
drwxr-xr-x 2 40 Nov 3 14:41 d2/d1/
rsync -i
显示 d2/d1 上的时间戳错误并修复它。
答案2
我最终写了一篇关于这个问题的文章,以防它对某人有用。实际上,元数据的每一位都可以使用 Rsync 进行保存,如帖子中所述。
这是同步所有内容的片段:
sudo rsync -avihXP --info=progress2 --stats --dry-run /mnt/disk?/ /mnt/temp/
答案3
rsync -avz
为我做一切
-v
用于详细
-a
用于存档模式(类似于 -rlptgoD)
-z
用于使用压缩