rsync 错误:文件的时间值在接收器上被截断

JJD*_*JJD 5 ubuntu rsync ntfs timestamps

我运行以下 rsync 命令来备份我的数据。我在 Ubuntu 12.04 上。

rsync -rt --delete --links --exclude-from '/home/john/rsync-exclude.txt' /media/data/ server:/backup/data
Run Code Online (Sandbox Code Playgroud)

数据分区为 NTFS 格式并通过/etc/fstab如下方式挂载。

UUID=371EB137049A5349 /media/data ntfs defaults,umask=007,uid=1000,gid=1000 0 0
Run Code Online (Sandbox Code Playgroud)

目标盘为 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]
Run Code Online (Sandbox Code Playgroud)

以下是源光盘上的文件。

-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
Run Code Online (Sandbox Code Playgroud)

这是文件在目标光盘上的样子。

-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
Run Code Online (Sandbox Code Playgroud)

我应该尝试修复文件的时间戳还是应该向 rsync 添加一些选项?无论您推荐什么,请给出理由并提供相关命令。

Gil*_*il' 7

28617 中的那个日期显然是错误的,这就是修复它的唯一原因。此外,它不在 1970-2038 范围内,这是普遍支持的日期范围。特别是,它超出了 ext4 (1901–2514) 支持的范围。因此,无论您使用什么工具,您都无法在目标系统上存储该日期。

您可以将文件设置为今天的日期:

touch 090513_185507.jpg 090513_194115.jpg
Run Code Online (Sandbox Code Playgroud)

或到可能在同一时间生成的其他文件的日期:

touch -r 090513_185458.jpg 090513_185507.jpg 090513_194115.jpg
Run Code Online (Sandbox Code Playgroud)

如果您有许多带有日期的文件,那么它们都在一个名称代表日期的目录中:

find /media/data -mtime --1 -execdir sh -c 'touch -d "${PWD##/*}" -- "$@"' _ {} +
Run Code Online (Sandbox Code Playgroud)