我运行以下 rsync 命令来备份我的数据。我使用的是 Ubuntu 12.04。
rsync -rt --delete --links --exclude-from '/home/john/rsync-exclude.txt' /media/data/ server:/backup/data
数据分区为NTFS格式,通过/etc/fstab
如下方式挂载。
UUID=371EB137049A5349 /media/data ntfs defaults,umask=007,uid=1000,gid=1000 0 0
目标磁盘是使用 ext4 格式化的 RAID。
但是,某些文件似乎具有错误的时间戳,从而导致出现以下错误消息。
Time value of /media/data/20090513/090513_185507.jpg truncated on receiver.
Time value of /media/data/20090513/090513_194115.jpg truncated on receiver.
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
以下是源光盘上的文件的样子。
-rwxrwx--- 2 john 2.0M May 13 2009 090513_185357.jpg
-rwxrwx--- 2 john 1.5M May 13 2009 090513_185458.jpg
-rwxrwx--- 2 john 1.6M Jul 29 28617 090513_185507.jpg <---
-rwxrwx--- 2 john 1.8M May 13 2009 090513_185520.jpg
-rwxrwx--- 2 john 2.4M May 13 2009 090513_194047.jpg
-rwxrwx--- 2 john 2.2M May 13 2009 090513_194101.jpg
-rwxrwx--- 2 john 2.1M Jul 29 28617 090513_194115.jpg <---
-rwxrwx--- 2 john 2.4M May 13 2009 090513_194135.jpg
这就是文件在目标光盘上的样子。
-rwxr-x--- 1 root root 1863446 May 13 2009 090513_185357.jpg
-rwxr-x--- 1 root root 1863446 May 13 2009 090513_185458.jpg
-rwxr-x--- 1 root root 1573733 Aug 8 04:18 090513_185507.jpg <---
-rwxr-x--- 1 root root 1863446 May 13 2009 090513_185520.jpg
-rwxr-x--- 1 root root 2504805 May 13 2009 090513_194047.jpg
-rwxr-x--- 1 root root 2297826 May 13 2009 090513_194101.jpg
-rwxr-x--- 1 root root 2147897 Aug 8 04:18 090513_194115.jpg <---
-rwxr-x--- 1 root root 2455909 May 13 2009 090513_194135.jpg
我应该尝试修复文件的时间戳还是应该向 rsync 添加一些选项?无论您建议什么,请给出理由并提供相关命令。
答案1
28617 这个日期显然是错误的,这就是修复它的唯一理由。此外,它超出了普遍支持的日期范围 1970-2038。特别是,它超出了 ext4 (1901–2514) 支持的范围。因此,无论您使用什么工具,您都无法将该日期存储在目标系统上。
您可以将文件设置为今天的日期:
touch 090513_185507.jpg 090513_194115.jpg
或可能在同一时间生成的其他文件的日期:
touch -r 090513_185458.jpg 090513_185507.jpg 090513_194115.jpg
如果您有许多带有遥远未来日期的文件,所有这些文件都位于名称代表日期的目录中:
find /media/data -mtime --1 -execdir sh -c 'touch -d "${PWD##/*}" -- "$@"' _ {} +