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 添加一些选项?无论您推荐什么,请给出理由并提供相关命令。
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)