使用 rsync 保留目录/文件夹上的修改日期

使用 rsync 保留目录/文件夹上的修改日期

我正在尝试备份出现故障的硬盘,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 进行保存,如帖子中所述。

在 Arch Linux 中用 Rsync 替换存储驱动器

这是同步所有内容的片段:

sudo rsync -avihXP --info=progress2 --stats --dry-run /mnt/disk?/ /mnt/temp/

答案3

rsync -avz为我做一切
-v用于详细
-a用于存档模式(类似于 -rlptgoD)
-z用于使用压缩

相关内容