2013-03-26 152 views
3

我使用rsync從我的相機備份我的照片,使用:rsync的備份和改變時區

rsync -vzrtl --progress --stats --timeout=0 host destination 

現在我是在一個不同的時區,當我做了我的第一次備份,然後我移動到不同的時區和我在筆記本電腦上更改了它(我使用的是Ubuntu 10.04.4)。今天,我被備份我的照片,我發現時間戳是不同的(我的意思是你可以用「LS -lt」看到時間戳),所以rsync的會複製整個目錄(我總是選擇rsync的運行-n先知道它將傳輸的文件列表)。現在這只是愚蠢的,因爲這些文件實際上是相同的。所以我改回了以前的時區,實際上文件時間戳在我的相機上變成了相同 - 這讓我覺得很奇怪。

後,我移動到前一個時區,我發現創建時間是相同的,但訪問和更改時間仍然是不同的文件,使用統計。例如:

主機

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 

和目的地

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 

我不想再複製的文件,這將是愚蠢的,你能不能提出一個乾淨的解決方案?我今後如何防止這種情況發生? 有沒有辦法阻止rsync覆蓋最近在目的地上修改過的圖片?

+0

有一些很奇怪的事情。更改時區不應該導致rsync重新複製文件,因爲更改時區不會影響實際時間戳,只會顯示時間戳。 – Celada 2013-03-26 16:05:58

回答

3

根本的問題是,相機使用Windows的FAT文件系統,它是當它涉及到不同時區,因爲它只存儲當地時間打破。隨着不同系統嘗試以不同方式補償破損,以避免其他類型的破損,隨之而來的問題也隨之而來。

對於一個討論,爲cygwin的解決方案,以及大量的潛在問題的參考,請參閱 Wayne Piekarski - Solution For Rsync and Cygwin Daylight Savings Timezone Problem

其中引用的存在有一定的問題的具體情況: Beating the Daylight Savings Time bug and getting correct file modification times - CodeProject

那些主要處理Windows,所以我仍然在研究如何在Linux上處理這個問題。見例如Bug #25048 「Vfat filesystems don't respect timezone」 : Bugs : 「linux-source-2.6.15」 package : Ubuntu

一些Linux解決方案在這裏討論: rsync and backup and changing timezone - Unix & Linux Stack Exchange,即--size只或--modify窗口= 3660,但他們都是有風險的,因爲他們將無法進行需要的備份,在某些情況下。

在我的情況下,FAT文件系統是在Android手機,這大概介紹了可能的解決方案還沒有更多的約束的SD卡。

我認爲這將是一個非常普遍的問題,所以我很驚訝,這不是更好地記錄。