sim*_*ona 4 backup rsync stat timestamps
我使用 rsync 从我的相机备份我的照片,使用:
rsync -vzrtl --progress --stats --timeout=0 host destination
Run Code Online (Sandbox Code Playgroud)
现在,当我进行第一次备份时,我处于不同的时区,然后我移到了不同的时区,并在笔记本电脑上进行了更改(我使用的是 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
Run Code Online (Sandbox Code Playgroud)
并在目的地
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
Run Code Online (Sandbox Code Playgroud)
有没有办法防止 rsync 覆盖目标上最近修改过的图片?
为了回答这个问题,我做一个假设:
您在本地使用 rsync,从安装的 SD 卡转移到备份空间
MMC 使用 FAT 文件系统进行格式化,因此设置它总是有用的,--modify-window=1
因为 FAT 文件系统以 2 秒的分辨率存储时间戳。
man rsync
给出--size-only
忽略last-modified
文件标志的选项。所以只有修改过大小的文件,例如编辑过的文件才会被同步。
另一种选择是将选项设置--modify-window
为两个 timzeones 之间的时间差(以秒为单位)。例如,modify-window=3660
如果有 1 小时的差异,则使用 2 小时
也许是您的 UTC 设置有问题。
您可以通过键入date --utc
Xour softwareclock is given by来检查您的硬件时钟是否设置正确date
。
该值应与您的本地时区与格林威治标准时间具有相同的差异。
您的硬件时钟应始终设置为 UTC,因此即使您更改时区(软件时钟),所有时间戳也设置正确。
如果 UTC 时间不正确,请检查 BIOS 中的设置是否正确。如果不是,请更正。
如果已设置,您可以检查/etc/default/rcS
。应该是以下行(Ubuntu 12.04)
#assume that the BIOS clock is set to UTC time (recommended)
UTC=yes
Run Code Online (Sandbox Code Playgroud)