GNU 焦油

GNU 焦油

我最近決定使用歸檔一些數據柏油。資料由同一資料夾的多個備份組成;這意味著它包含很多重複項。我讀到,因為 Tar 缺乏索引,所以它不能很好地處理包含許多重複項的資料。所以基本上我的問題是 Tar 適合歸檔這類資料嗎?

我最關心的是保留存檔中的所有原始數據,這包括所有文件時間戳:創建、修改、存取。

答案1

當然,Tar 可以歸檔這些備份,無論其中有多少副本。如果您在 100 個不同的資料夾中有 100 個檔案 abc.doc 的副本,則該檔案將被存檔 100 次。也就是說,它效率不高。

如果備份工具可以刪除重複數據,它可以識別這 100 個相同的文件,備份一個,並引用它 99 次。如果其中一個版本發生更改,它將刪除引用,並單獨備份。

答案2

GNU 焦油

創建時間:

Linux 並沒有真正記錄檔案建立時間。它有ctime時間戳,有時會被誤認為是創建時間,但這實際上是「inode 更改時間」:它記錄了文件或其權限、所有者等上次更改的時間。它比 更頻繁地變化mtime。該ctime標記由核心處理,並且不能由使用者設定為任意值(儘管您可以輕鬆地將其重置為當前時間)。

修改時間:

mtime被保存為tar

訪問時間:

tar通常甚至會更改原始文件的存取時間。您可以使用該--atime-preserve標誌來防止這種情況。您可能還需要--preserve保留權限(以及目錄排序順序)的標籤。

我不知道您是否可以tar對存檔文件進行保留atimes,但您始終可以透過以下方式修復這些問題:

  1. 解壓縮
  2. 在每個文件上使用touch -a -d TIME FILE(時間格式為[[CC]YY]MMDDhhmm[.ss]
  3. 重新壓縮tar --atime-preserve

警告:使用--atime-preserve目前會記住atime,因此可以在讀取後保存它。在大多數系統上,這將導致 ctime 發生變化,有時會幹擾其他軟體(例如安全軟體)。

其他軟體

您可能會調查rsync(參見本文例如)或版本控制系統(如git

相關內容