Tar
如何讓 tar 在存檔創建過程中即時硬連結相同的內容?
我怎樣才能
tar
(或任何其他在 Linux 上通常可用的程序,例如pax
)在存檔創建期間即時硬連結重複的內容?也就是說,我想避免預先進行硬連結,而是想
tar
照顧它。那可能嗎?如何?
到目前為止,這對於 GNU tar 來說是不可能的,但事情是存在的:
- https://github.com/stfp/tar-dedup:帶有實驗性 –dedup-filter 命令的修補 GNU tar
- http://zbackup.org/吃和吐出 tar 格式的流和重複數據刪除
請注意,硬連結和重複數據刪除沒有相同的語義,需要另一種 tar 節點類型來表示“重複數據”,以便存檔提取過程正確地重新創建重複的(從而獨立存在的)文件;這將創建與大多數標準工具(GNU tar、pax 等)不兼容的 tar 檔案,這將是一個大膽的舉措。
讓我堅持:如果您能夠用硬連結文件同化受騙者,那麼您將在歸檔提取時遇到問題:* 它們真的像 Git 儲存庫中的硬連結文件嗎?那麼它們應該真正重新創建為硬連結文件,否則恢復的 Git 儲存庫將不起作用?* 或者它們是否真的是相同的文件,如果它們被恢復為硬連結,恢復的存檔可能會有重大的數據洩漏(假設您在存檔時同化了相同的 /etc/passwd 文件,將它們恢復為具有多個硬連結的單個文件:一個一個VM中的修改在另一個VM中變得可見!)