Ubuntu

rsync 錯誤:在接收器上截斷文件的時間值

  • April 27, 2016

我執行以下 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 添加一些選項?無論您推薦什麼,請給出理由並提供相關命令。

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##/*}" -- "$@"' _ {} +

引用自:https://unix.stackexchange.com/questions/47266