Backup

當源樹有掛載點時,如何告訴 rsync 在文件上保留時間戳

  • November 3, 2021

與這個問題有關

問題的簡短描述:

-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 會更改:

c-time當他們被帶到一個新的文件系統時,OP 不能保留他們的文件。在新文件系統中創建這些文件是上面列出的條件之一(創建 inode/文件)。

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