我最近決定使用歸檔一些數據柏油。資料由同一資料夾的多個備份組成;這意味著它包含很多重複項。我讀到,因為 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,但您始終可以透過以下方式修復這些問題:
- 解壓縮
- 在每個文件上使用
touch -a -d TIME FILE
(時間格式為[[CC]YY]MMDDhhmm[.ss]
) - 重新壓縮
tar --atime-preserve
警告:使用--atime-preserve
目前會記住atime,因此可以在讀取後保存它。在大多數系統上,這將導致 ctime 發生變化,有時會幹擾其他軟體(例如安全軟體)。
其他軟體
您可能會調查rsync
(參見本文例如)或版本控制系統(如git
)