Backup
當源樹有掛載點時,如何告訴 rsync 在文件上保留時間戳
與這個問題有關
問題的簡短描述:
-a
當源樹內部有一個掛載點時,即使使用選項,複製到目標樹時也不會保留該掛載點內文件的時間戳詳細說明:
假設這是原始碼樹:
/home/ /home/ | | me/ BACKUP/ | | +----+----------+ +----+-------+ | | | | | | data/ foo.txt boo.txt data/ foo.txt boo.txt | | a.txt a.txt
上面是
data/
掛載的外部USB磁碟。一切都是ext4
文件系統。原始碼中的所有內容都歸我所有me
。
BACKUP
也正好是一個掛載點,備份U盤。發出此命令後
rsync -av --delete /home/me/ /home/BACKUP/
,我發現它/home/BACKUP/data/
下面的所有內容都有目前時間戳,好像這些文件是現在創建的,而不是/home/me/data/
. 外面的其他文件和文件夾data
確實保留了時間戳。問題是:如何
rsync
在上述設置中使用它來告訴它保留所有文件和文件夾的時間戳,甚至是掛載點上的文件和文件夾?我在用:
>uname -a Linux 3.5.0-17-generic #28-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux >rsync -v rsync version 3.0.9 protocol version 30
來自
man rsync
:-t, --times preserve modification times
由於您要將文件從一個文件系統複製到另一個文件系統並希望保留
c-time
. 大多數人理解c-time
的意思是“創建時間”,這在大多數 UNIX/Linux 系統上是不正確的(Windows 文件系統跟踪“創建”或“出生”時間)。大多數情況下,在 UNIX 和 Linux 中,
c-time
時間戳是用來記錄最後一個 inode ’ C’hange的。如果更新其任何屬性,則 inode 會更改:
- 創作(OP的案例)
- 模式(權限)
- 所有者/組
- 硬連結數
- 等(stat() 系統呼叫)
c-time
當他們被帶到一個新的文件系統時,OP 不能保留他們的文件。在新文件系統中創建這些文件是上面列出的條件之一(創建 inode/文件)。