也許整個問題的一個變體是:tar
除了保留 Linux 檔案權限和使用者/群組標誌之外,還有其他歸檔工具嗎?
我想在我的 ubuntu 機器上建立目錄樹的檔案。目錄樹很大,第一次運行會tar cvpzf archive.tgz /home/foo/bar
產生 5GB 的檔案。
我還想保留所有權限和其他標誌和特殊文件。
我對 5GB 存檔沒問題,但是要查看該存檔的內部 - 因為它是壓縮的 tar 存檔 - 必須先解壓縮整個 5GB! (或者當用存檔檢視器打開它時會出現這樣的情況 - 我很高興得到糾正。)
因此,我需要一種方法來「備份」目錄(樹),同時保留完整的檔案系統屬性和權限,並使用「索引」建立存檔,無需解壓縮即可瀏覽其內容。
編輯:指定我認為的存檔,之後惠利的回答:
存檔可以是單一文件,也可以是一組(小)文件,其中包含滿的和完全的該文件中的資訊。也就是說,它可以存在於任何檔案系統上(大小允許),它可以刻錄到 DVD 上,你可以split
(之後這個問題的要點就真的消失了 - 但仍然如此),...
答案1
你知道 tar 的 t 函數可以列印出存檔的內容嗎?您可以在 gzip 壓縮檔案上使用它,如下所示:
tar ztvf archive.tgz
它將以長列表格式列印文件,包括時間戳記和大小。事實證明,如果您在創建存檔時使用兩個 v 選項,它將在將文件添加到存檔時長列出文件(而不是簡單地列出它們),因此您可以執行類似的操作來自動創建索引當您一次性備份時:
tar cvvpzf archive.tgz /home/foo/bar > archive.tgz.index
請注意兩個 v 選項的使用。許多其他命令允許您透過這種方式增加詳細程度(例如 ssh)。
答案2
我多次遇到這個問題。這就是我的想法。
壓縮
.zip
如果使用大多數 Linux 系統上安裝的 zip 實用程式建立的檔案支援 UNIX 權限和符號連結。但是,它不支援全部支援的擴展tar
,例如硬連結和擴展屬性。但是您可以從 ZIP 檔案中提取文件,而無需先將整個存檔解壓縮到該點,所以這是一個勝利。
壁球FS
如果您正在尋找可安裝的壓縮唯讀檔案系統,目前的最佳競爭者是壁球FS。但有一個問題……嗯,確實有一些問題。具體來說:
- SquashFS 相對較新,不像
tar
. - 該工具的兩個不同版本產生了兩種彼此不相容的磁碟格式。確保您得到正確的。
- 沒有 FUSE 驅動程式——您需要對您的 squashfs 版本進行核心支援才能掛載映像。
- 支援工具(
mksquashfs
和unsquashfs
)相當簡單,並且不支援您所看到的廣泛選項tar
。 - 沒有太多文檔。
答案3
主要問題似乎是
....要查看該存檔的內部...必須先解壓縮整個 5GB! (或使用存檔檢視器開啟它時會出現...)
確實需要解壓縮,但這並不意味著需要將所有檔案「解壓縮」到檔案系統。
要提取單個或多個文件,tar
將解壓縮整個存檔,但丟棄除作為參數列出的文件之外的任何內容。
類似地,用-t
( --list
) 列出檔名需要解壓縮整個存檔,但會丟棄所有檔案內容。
要理解為什麼存檔開頭沒有索引,請考慮到tar
最初是為了與磁帶設備一起使用而設計的;因此得名tar
「磁帶歸檔器」。在磁帶上,您希望在末尾添加下一個文件,而不希望倒帶到開頭來寫入索引。
答案4
您可能想研究一下fusecompress,它「提供了一個可安裝的Linux檔案系統,可以透明地壓縮其內容。儲存在該檔案系統中的檔案是動態壓縮的,Fuse允許在壓縮檔案和使用者應用程式之間建立透明的介面。
對於用戶來說,可以存取儲存的文件,就好像它們沒有被壓縮一樣。
但如果有空間,為什麼不直接複製目錄樹呢?更簡單。
另一種選擇是將目錄樹複製到 USB 隨身碟。這將允許輕鬆存取並防止磁碟崩潰。