rsync 和备份以及更改时区

rsync 和备份以及更改时区

我使用 rsync 备份相机中的照片,方法是:

 rsync -vzrtl --progress --stats --timeout=0 host destination

现在,当我进行第一次备份时,我处于不同的时区,然后我移动到不同的时区,并在笔记本电脑上更改了它(我使用 ubuntu 10.04.4)。今天我正在备份我的图片,我发现时间戳不同(我的意思是你可以用'ls -lt'看到的时间戳),所以rsync会复制整个目录(我总是先使用选项-n运行rsync来知道它将传输的文件列表)。现在这很愚蠢,因为文件实际上是相同的。所以我改回以前的时区,事实上,文件时间戳在我的相机上更改为相同的 - 我觉得这有点奇怪。

我再次运行 rsync,文件仍然不同:@ 现在,我不想再次复制文件,这很愚蠢,你能建议一个干净的解决方案吗?今后我该如何防止这种情况发生?如果我更改为以前的时区,为什么文件仍然不同?


我发现文件的访问和更改时间不同,使用stat。例如:

在主机上

   File: `DSC00003.JPG'
   Size: 3068392    Blocks: 6016       IO Block: 32768  regular file
 Device: 821h/2081d Inode: 2109        Links: 1
 Access: (0755/-rwxr-xr-x)  Uid: ( 1000/simona)   Gid: ( 1000/simona)
 Access: 2013-03-26 00:00:00.000000000 +0000 
 Modify: 2007-12-25 22:48:20.000000000 +0000
 Change: 2007-12-25 22:48:20.000000000 +0000

并在目的地

   File: `DSC00003.JPG'
   Size: 3068392    Blocks: 6008       IO Block: 4096   regular file
 Device: 802h/2050d Inode: 245762      Links: 1
 Access: (0755/-rwxr-xr-x)  Uid: ( 1000/simona)   Gid: ( 1000/simona)
 Access: 2013-03-26 10:24:49.000000000 +0000
 Modify: 2007-12-25 22:48:20.000000000 +0000
 Change: 2013-02-09 00:11:09.000000000 +0000

有没有办法防止 rsync 覆盖目的地上最近修改过的图片?

答案1

为了回答这个问题我做一个假设:

您正在本地使用 rsync,从已安装的 SD 卡传输到备份空间

MMC 使用 FAT 文件系统进行格式化,因此设置它总是有用的,--modify-window=1因为 FAT 文件系统以 2 秒分辨率存储时间戳。

man rsync--size-only给出忽略last-modified文件标志的选项.因此,只有修改大小的文件(例如编辑过的文件)才会同步。

另一种选择是将选项设置--modify-window为两个 timzeone 之间的时间差(以秒为单位)。例如modify-window=3660,如果有 1 小时的差异,则使用 2 小时

可能是您的 UTC 设置有问题。

date --utc 您可以通过输入Xour softwareclock is generated by 来检查您的硬件时钟设置是否正确date

该值应与您的本地时区与格林威治标准时间的差异相同。

您的硬件时钟应始终设置为 UTC,以便即使您更改时区(软件时钟),所有时间戳也会设置正确。

如果 UTC 时间不正确,请检查 BIOS 中的设置是否正确。如果不正确,请更正。

如果已设置,您可以检查/etc/default/rcS。应该是以下行(Ubuntu 12.04)

#assume that the BIOS clock is set to UTC time (recommended)
UTC=yes

相关内容