題 今天使用'tar'有什麼好處?


我知道 tar 是在當天製作的磁帶存檔,但今天我們有存檔文件格式,它們聚合文件並以相同的邏輯文件格式執行壓縮。

問題:

  • 在聚合/壓縮/解壓縮階段使用時是否存在性能損失 tar 封裝在 gzip 要么 bzip2,與使用在同一數據結構中進行聚合和壓縮的文件格式相比?假設被比較的壓縮器的運行時間是相同的(例如,gzip和Deflate是相似的)。

  • 是否有功能 tar 其他文件格式的文件格式,如 .7z 和 .zip 沒有?

  • 以來 tar 是一種舊的文件格式,今天存在更新的文件格式,為什麼 tar (無論是封裝在 gzipbzip2 甚至是新的 xz今天在GNU / Linux,Android,BSD和其他類似的UNIX操作系統上如此廣泛使用,用於文件傳輸,程序源和二進制下載,有時甚至作為包管理器格式?


206
2018-03-14 14:33


起源


我不同意它“浪費時間”。如果您的意思是性能,那麼tar不會有實際的性能損失,因為格式非常有效。如果你的意思是浪費 您的 時間,我看不出來 tar xvzf 比...更難 7z -x... - Horn OK Please
他似乎感到遺憾的是,tar一開始就沒有存儲目錄,因此想要在提取之前列出內容的gui壓縮工具必須解壓縮整個tar才能列出內容,然後在解壓縮時再次解壓縮。 - psusi
@MarcusJ:你認為7z不知何故神奇地知道每個文件在檔案中的起始位置?此外,通常的壓縮算法(gzip,bzip2)與流式傳輸內容一起使用:無需在接下來的第一階段完成100%。 - progo
另外@MarcusJ你似乎混淆了兩件不同的事情:當你這樣做時 tar xvzf,未壓縮的數據 不是 寫入硬盤 .tar 格式!如果你跑了,你是對的 gunzip blah.tar.gz 然後 tar xf blah.tar,它會將數據寫入磁盤兩次(一次作為.tar,再次作為文件系統中的文件),但沒有人真正這樣做。該 tar xzf 用一個 UNIX管道 (基本上是一個內存副本)來傳輸未壓縮的數據 gzip (或任何壓縮機)到 tar,所以數據是 不 寫入磁盤 .tar 格式。 - Horn OK Please
我知道的一件事是 tar (特別是壓縮的)在數據損壞方面表現得非常糟糕。現代格式添加的小冗餘/恢復數據值得用金 - PPC


答案:


第1部分:表現

以下是兩個獨立工作流程的比較以及它們的作用。

你有一個磁盤上的文件 blah.tar.gz 例如,1 GB的gzip壓縮數據,當未壓縮時,佔用2 GB(因此壓縮率為50%)。

如果您要單獨進行歸檔和壓縮,那麼創建此方法的方法是:

tar cf blah.tar files ...

這將導致 blah.tar 這只是一個集合 files ... 以未壓縮的形式。

然後你會這樣做

gzip blah.tar

這將讀取內容 blah.tar 從磁盤,通過gzip壓縮算法壓縮它們,將內容寫入 blah.tar.gz,然後取消鏈接(刪除)文件 blah.tar

現在,讓我們解壓縮!

方式1

你有 blah.tar.gz, 不管怎樣。

你決定運行:

gunzip blah.tar.gz

這將

  • 讀取1 GB的壓縮數據內容 blah.tar.gz
  • 處理壓縮數據通過 gzip 內存中的解壓縮程序。
  • 當內存緩衝區填滿“塊”數據時,將未壓縮的數據寫入文件 blah.tar 在磁盤上重複,直到讀取所有壓縮數據。
  • 取消鏈接(刪除)文件 blah.tar.gz

現在,你有 blah.tar 在磁盤上,它是未壓縮的但包含一個或多個文件,具有非常低的數據結構開銷。文件大小可能是 幾個字節 大於所有文件數據的總和。

你跑:

tar xvf blah.tar

這將

  • 讀取2 GB的未壓縮數據內容 blah.tar 和 tar 文件格式的數據結構,包括有關文件權限,文件名,目錄等的信息。
  • 將2 GB數據和元數據寫入磁盤。這包括:將數據結構/元數據信息轉換為適當的在磁盤上創建新文件和目錄,或者用新數據內容重寫現有文件和目錄。

我們的總數據  在這個過程中從磁盤是1 GB(對於gunzip)+ 2 GB(對於tar)= 3 GB。

我們的總數據 寫下了這 在這個過程中磁盤是2 GB(對於gunzip)+ 2 GB(對於tar)+幾個字節的元數據=大約4 GB。

方式2

你有 blah.tar.gz, 不管怎樣。

你決定運行:

tar xvzf blah.tar.gz

這將

  • 讀取1 GB的壓縮數據內容 blah.tar.gz,一次一塊,進入記憶。
  • 處理壓縮數據通過 gzip 內存中的解壓縮程序。
  • 當內存緩衝區填滿時,它會  那些數據,在內存中,通過 tar 文件格式解析器,它將讀取有關元數據等的信息和未壓縮的文件數據。
  • 隨著內存緩衝區的填滿 tar 文件解析器,它將未壓縮的數據寫入磁盤,通過創建文件和目錄並用未壓縮的內容填充它們。

我們的總數據  從這個過程中的磁盤是1 GB的壓縮數據,期間。

我們的總數據 寫下了這 在此過程中磁盤是2 GB的未壓縮數據+幾個字節的元數據=約2 GB。

如果您注意到,磁盤I / O的數量 方式2 是 相同 比如,執行磁盤I / O. Zip 要么 的7-Zip 程序,調整壓縮比的任何差異。

如果你擔心壓縮比,請使用 Xz 壓縮機封裝 tar, 你有 LZMA2'ed TAR存檔,與7-Zip可用的最先進算法一樣高效:-)

第2部分:功能

tar 在其文件元數據中存儲Unix權限,並且是眾所周知的並且經過測試,成功地打包了具有各種不同權限,符號鏈接等的目錄。有多個實例可能需要對一堆文件進行全局處理單個文件或流,但不一定壓縮它(雖然壓縮是有用的,經常使用)。

第3部分:兼容性

許多工具以源代碼或二進制形式分發為.tar.gz或.tar.bz2,因為它是“最小公分母”文件格式:就像大多數Windows用戶可以訪問.zip或.rar解壓縮程序一樣,大多數Linux安裝即使是最基本的,無論多大年紀或減少,都可以獲得至少焦油和噴槍。甚至Android固件也可以訪問這些工具。

針對運行現代發行版的受眾的新項目可能會以更現代的格式進行分發,例如.tar.xz(使用Xz(LZMA)壓縮格式,壓縮比gzip或bzip2更好)或.7z,類似於ZIP或 RAR 文件格式,它既壓縮又指定用於將多個文件封裝到單個文件中的佈局。

您沒有看到.7z更頻繁地使用,原因與音樂不是以全新格式在線下載商店銷售相同 作品,或視頻 WebM的。與運行古代或非常基本系統的人員兼容。


175
2018-03-14 17:09



感謝所有內容在三個不同的標題下分開的完美答案。 - JFW
“第3部分:兼容性”似乎是從@ Kruug的答案中復製而來的。 - titaniumdecoy
@titaniumdecoy您是否注意到最初編寫該部分並將其編輯為Kruug的答案的是allquixotic? - slhck
謝謝你指出這一點,我沒注意到。然而,在這個頁面上有兩個不同答案的相同文本塊似乎有點愚蠢。 - titaniumdecoy
這回答了原因 tar 適合存檔生態系統(即,將文件聚合在一起,提供性能提升和一些其他好處,如權限節省),但它沒有解決為什麼現代替代品,如 dar 沒有使用到位。換句話說,這個答案證明了文件聚合器的使用是合理的,而不是 tar 軟件本身。 - gaborous


這個 已經在Stack Overflow上得到了解答

bzip和gzip適用於單個文件,而不適用於文件組。普通的舊zip(和pkzip)對文件組進行操作,並具有內置存檔的概念。

* nix哲學是一種小工具,可以很好地完成特定的工作,並且可以鏈接在一起。這就是為什麼這裡有兩個具有特定任務的工具,它們的設計非常適合。它還意味著您可以使用tar來分組文件,然後您可以選擇壓縮工具(bzip,gzip等)。

許多工具以源代碼或二進制形式分發為.tar.gz或.tar.bz2,因為它是“最小公分母”文件格式:就像大多數Windows用戶可以訪問.zip或.rar解壓縮程序一樣,大多數Linux安裝即使是最基本的,也至少可以獲得 tar 和 gunzip,不管多大年紀或減少。甚至Android固件也可以訪問這些工具。

針對運行現代發行版的受眾的新項目可能會以更現代的格式進行分發,例如 .tar.xz (使用Xz(LZMA壓縮格式,比gzip或bzip2)或.7z壓縮得更好,類似於 壓縮 要么 RAR 文件格式,它既壓縮又指定用於將多個文件封裝到單個文件中的佈局。

您沒有看到.7z更頻繁地使用,原因與音樂不是以全新格式在線下載商店銷售相同 作品,或視頻 WebM的。與運行古代或非常基本系統的人員的兼容性非常重要。


101
2017-08-19 08:50



嗨@Kruug,我編輯了你的帖子,只是為了讓人們對人們的原因有所了解 選擇 當他們可以選擇使用其他東西時使用這些格式。我沒有改變你已有的文字。這只是為了確保這個問題的規範答案看起來能夠全面展現。如果你想要隨意編輯我的編輯:) - Horn OK Please
@allquixotic開始有人嗎?編輯編輯和編輯,以便編輯編輯... - SnakeDoc
這個答案絕對是一個“我有時被不當的讚成票吹走”的案例。它沒有解決問題的核心問題,即列出壓縮tar的內容,它甚至不是原始答案! - Ярослав Рахматуллин
-1為了正義。這應該是一個評論。 - wim
我不買遺產/最低公分母的論點;我記得在新系統(太陽)經常不得不下載gzip / gunzip(來自sunfreeware)只是為了安裝其他tar.gz打包軟件(加上gnu tar,因為sun的tar被吸了)。對於傳統/低共同點,你有 tar.Z (壓縮/解壓縮)。公用事業的進展一直是變化和改進的流程(沒有雙關語):Z => zip => gz => bz2 => 7z => xz(或您喜歡的任何順序)。至於tar的角色,一些utils只能解壓縮,並且仍然需要tar來捆綁文件層次結構。 - michael


Tar擁有豐富的操作和修飾符,可以了解所有關於Unix文件系統的知識。它了解Unix權限,關於與文件相關的不同時間,關於硬鏈接,軟鏈接(以及符號鏈接可能在文件系統圖中引入循環的可能性),並允許您指定幾種不同的方式來管理所有這些數據。

  • 您是否希望提取的數據保留文件訪問時間? 焦油可以做到這一點。 保留權限? 焦油可以做到這一點。

  • 您想將符號鏈接保留為符號鏈接嗎? Tar默認情況下會這樣做。 想要復制目標嗎? 焦油可以做到這一點。

  • 您是否希望確保硬鏈接數據僅存儲一次(即,做正確的事情)? 焦油那樣做。

  • 你想要處理稀疏文件嗎? 焦油可以做到這一點。

  • 你想要未壓縮的數據(為什麼?)? 焦油可以做到這一點。 用gzip壓縮? 焦油可以做到這一點。 用bzip2? 焦油可以做到這一點。 使用任意外部壓縮程序? 焦油可以做到這一點。

  • 您想要寫入原始設備還是從原始設備恢復? Tar的格式處理得很好。

  • 是否要將文件添加到現有存檔? 焦油可以做到這一點。 差異兩個存檔,看看有什麼變化? 焦油可以做到這一點。 僅更新已更改的存檔的那些部分? 焦油可以做到這一點。

  • 您是否希望確保不在多個文件系統中存檔? 焦油可以做到這一點。

  • 您是否只想獲取比上次備份更新的文件? 焦油可以做到這一點。

  • 您想保留用戶名和組名嗎? 焦油可以做任何一個。

  • 您是否需要保留設備節點(如中的文件) /dev)這樣在提取後,系統會正常運行? 焦油可以做到這一點。

幾十年來,Tar一直在不斷發展以處理大量的用例,而且確實知道 很多 關於人們想要用Unix文件系統做的事情。


61



你不需要GNU tar來使用任意壓縮器:只需告訴tar將存檔寫入stdout f - 並將其輸送到壓縮機。 - Ilmari Karonen
“你想要未壓縮的數據(為什麼?)?”我用 tar 經常將文件系統樹從一個地方復製到另一個地方並保留權限等,在這種情況下壓縮只需要額外的CPU週期。例如。 tar cf - * | tar xf - -C /somewhere。 - Steve
此外,當目標文件系統執行重複數據刪除時,您需要一個.tar文件。在執行重複數據刪除的文件系統上創建壓縮存檔將大大降低重複數據刪除率。示例:我們曾刪除$ 10,000.00 tar.gz文件;意思是,它佔用了價值1萬美元的存儲空間,因為有人使用壓縮。 - Aaron
對於像LZ4或LZO這樣的算法,@ Steve CPU週期可能比磁盤IO便宜。這就是為什麼它們在zram和透明壓縮文件系統中使用,如NTFS,ZFS,Btrfs ......所以有時它實際上比壓縮更快,因為磁盤IO的數量大大減少了 - phuclv


你混淆了兩個截然不同的過程 歸檔 和 壓縮

使用歸檔器的原因

例如,如果一堆就使用沒有壓縮的歸檔的一個原因 將文件從一個主機複製到另一個主機。如下命令

tar cf - some_directory | ssh host "(cd ~/somewhere | tar xf -)"

可以大大加快速度。如果我知道文件不能 壓縮或如果 SSH 通過壓縮設置,可以節省可觀的CPU 時間。當然,可以使用具有歸檔功能的更現代的壓縮工具 並關閉壓縮。的優點 tar 是的,我可以期待它 在每個系統上都可用。

使用帶有gzip壓縮的歸檔程序的原因

我使用的一個原因 tar 同 gzip 是: 速度! 如果我想將一些GiB文本文件從一個地方傳輸到另一個地方,我 因為只是壓縮,所以不關心擠出最後的字節 用於運輸,不用於長期儲存。在那些情況下我使用 gzip, 它沒有最大化CPU(與之相反) 的7-Zip,例如),哪個 意味著我 I / O 再次綁定而不是CPU綁定。然後再次: gzip 可 到處都可以看到。

使用原因 tar 贊成 scprsync

它打敗了 scp 如果要復制很多小文件(例如,包含數十萬個文件的郵件目錄)。 rsync雖然很棒,但可能無處不在。進一步, rsync 只有部分文件 - 或舊版本 - 已經存在於目的地時才真正得到回報。對於初始副本 tar 根據實際數據,壓縮或不壓縮是最快的。


28



但如果你要歸檔,為什麼不壓縮呢?好的,是的,它可以節省不容易壓縮的文件的時間,但是歸檔者應該知道,例如,音樂不是非常可壓縮的,除了標題。 - MarcusJ
您可能不需要,或者您的內容可能不可壓縮。 - Hasturkun
出於性能原因,在超過壓縮器壓縮數據速度的超高帶寬網絡鏈路上發送數據時,通常更容易使用未壓縮文件聚合。這可以通過千兆以太網實現;只有少數精心設計的壓縮算法,壓縮比非常低,即使在大型桌面CPU上也能快速壓縮數據。在嵌入式設備上,您可以使用更少的CPU時間。 - Horn OK Please
這不僅可以加快速度,還可以保留文件所有權,時間戳和屬性(如果用戶權限允許) - Andre Holzner
@AndreHolzner對。我經常這樣做 tar cf - . | (cd ~/somewhere; tar xvf -)。不必等到中央索引被寫入(例如在zip文件中)是非常有用的。 - user239558


在這裡添加其他好的答案,我更喜歡這種組合 tar + gzip|bzip2|xz 主要是因為這些壓縮文件就像流一樣,你可以輕鬆地管它們。

我需要解壓縮互聯網上的文件。任何一個 zip 要么 rar 格式我必須先下載它然後解壓縮它。同 tar.{gz,bz2,xz} 我可以在同一步驟下載和解壓縮,而無需在磁盤上進行壓縮存檔:

curl -s http://example.com/some_compressed_file.tar.gz | tar zx

這將只留下我的磁盤中的未壓縮文件,並將加快整個過程,因為我沒有先浪費時間先下載整個文件,下載完成後我將其解壓縮。相反,我在下載時解壓縮它。你不能這樣做 zip 要么 rar 文件。


24



我不知道rar(這是一個可怕的程序,似乎只是因為它能夠分成多個較小的文件而受到海盜的歡迎),但你可以流式傳輸zip。該手冊頁甚至提到了它。它還具有能夠有效地從大型存檔中間提取或更新文件的優點,儘管tar往往會獲得稍微好一點的壓縮。壓縮與隨機訪問是一種權衡。 - psusi
@psusi不對。你可以做像黑客一樣的黑客 這個,但它的作用是將所有文件下載到內存中然後解壓縮,而不是在下載時解壓縮。和 funzip 只提取zipfile中的第一個文件,而不是全部。 - Carlos Campderrós
@Stu只是為了澄清,不是問題,只是優化你的時間(我不關心空間,如果那是你的想法) - Carlos Campderrós
雙方都在工作:你可以在一邊焦油,也可以在另一邊解開: tar zc /some/folder | ssh user@host "cd /other/folder && tar zx" - Carlos Campderrós
@psusi我記得很久以前使用pkzip在多個軟盤上存儲文件,zip存檔目錄在存檔結束時。它始終要求最後一張軟盤用於開始提取或顯示目錄。所以 en.wikipedia.org/wiki/File:ZIP-64_Internal_Layout.svg - Mikhail Moskalev


堅持使用(GNU)Tar有幾個原因。

它是:

  • GPL許可
  • 在Unix哲學意義上很好
    • 單一用途工具,能夠完成多項任務
  • 文檔齊全,具有許多可信任的功能
  • 與幾種壓縮算法兼容
  • 易於使用,人們已經習慣了它
  • 廣泛可用
  • 使用軟件啟動時,我感到溫暖和模糊 RMS (除 Emacs的

如果您的特定牛肉必須在能夠閱讀內容之前“解壓縮”tarball,那麼您可能是對的。 WinRAR的 和 的7-Zip 自動完成。但是,這個問題有一些簡單的解決方法,例如以未壓縮的形式記錄存檔的內容。


13



它是免費的軟件 - 很多它們很擅長它的功能 - 很難與其他東西相比它有很好的文檔記錄,並且具有很多功能 - 功能很難使用,而且很容易使用。它支持多種壓縮算法 - 不像其他算法那麼多 - Griffin
Unix Gods創造了它 - 因此我們必須使用它! - SnakeDoc
Tar還可以本地存儲UNIX權限,並且是眾所周知和經過測試的。有一些實例可能需要將一堆文件整合到一個文件或流中,但不一定要壓縮它。 - LawrenceC
幸運的是,tar並不僅限於GNU版本。雖然GNU tar肯定是一個很好的軟件,但libarchive +相關的前端更快,更容易嵌入到其他軟件項目中。你可以為tar做一個論證而不把它變成許可證。 - Lucas Holt
我不是諷刺。我喜歡RMS以及他表達自己信仰的方式。 - Ярослав Рахматуллин


文件格式如.zip 要求 軟件首先讀取文件的結尾,以讀取文件名的目錄。相反,tar將信息存儲在壓縮流中。

tar方式的優點是,您可以在從不可搜索的管道(如網絡套接字)讀取數據時解壓縮數據。

zip方式的優點是,對於磁盤上的靜態文件,您可以瀏覽內容和元數據,而無需先解壓縮整個存檔。

兩者都有它們的用途,取決於你正在做什麼。


11



不,您可以將zip文件作為流讀取和寫入管道。 - Mark Adler
那可能是特定於實現的,原來的pkzip當然不支持它。 - xorsyst
是的,必須編寫軟件才能支持它。 zip格式完全支持它,數據描述符可以跟隨壓縮數據的長度和CRC。 - Mark Adler
@MarkAdler,什麼軟件? Infozip不支持從管道解壓縮。 - psusi
zlib.net/sunzip033.c.gz - Mark Adler


似乎有些人不願意直接回答你的所有問題,顯然傾向於將你的問題作為一個跳躍點來進行辯解。所以我會試一試。

是否存在性能損失   使用tar的聚合/壓縮/解壓縮階段   與使用文件格式相比,封裝在gzip或bzip2中   在同一數據結構中進行聚合和壓縮?   假設被比較的壓縮器的運行時間是相同的(例如,   gzip和Deflate類似)。

實際上,由於tar和gzip通常是兩個進程,你甚至可以獲得像Info-ZIP的zip這樣的歸檔器無法提供的多核速度優勢。就壓縮率而言,tar + gzip通常會比使用deflate的zip明顯更好,因為前者可以從文件之間的相關性中受益,而後者可以單獨壓縮文件。壓縮效益在提取時轉化為速度優勢,因為壓縮程度更高的存檔會在更短的時間內解壓縮。

是否存在其他文件格式的tar文件格式的功能,   比如.7z和.zip沒有?

是的,tar是專為Unix設計的,並且經過多年的發展,能夠準確地記錄和恢復Unix文件系統的每個奇怪的小角落,甚至是更加笨拙的Mac OS X Unix文件系統。 zip能夠保留許多元數據,如權限,時間,所有者,組和符號鏈接,但仍然不是所有內容。例如,zip和7z都不能識別或利用稀疏文件,也不知道或無法恢復硬鏈接。

由於tar是一種舊文件格式,因此存在較新的文件格式   今天,為什麼是tar(無論是封裝在gzip,bzip2還是新的   xz)今天仍廣泛用於GNU / Linux,Android,BSD等   這樣的UNIX操作系統,用於文件傳輸,程序源和   二進制下載,有時甚至是包管理器格式?

這裡有很多其他好的答案。最好的是 它只是工作,你可以繼續更新它以更好的壓縮格式(例如xz),仍然使用相同的tar格式甚至相同的編譯tar實用程序。如果你只想收拾一堆東西,然後在另一端解壓縮,那麼就沒有什麼理由可以使用其中一個最老,最完整,調試最多的軟件。

如果你想要隨機訪問,部分更新或其他需要零碎地處理內容的東西,或者你希望能夠在不閱讀整個內容的情況下找出其中的內容,那麼你會想要使用不同的格式。


11



CW 代表 社區維基。也可以看看 什麼是“社區維基”帖子?。 - ctype.h
我想這是CW,因為這個問題有超過15個答案。當您發布此答案時,因為它是第15個,所以問題和所有答案都標記為CW。 - ctype.h
我沒有看到這個答案是如何解釋除了直接引用問題之外沒有其他答案做的事情(我寫的是BTW,因為這個問題的原始版本很可能被關閉為NARQ)。不錯的嘗試。 - Horn OK Please
嗯,好的。無論你想要什麼,都可以。您的答案或任何其他答案似乎都在解決是否存在性能損失。你的答案沒有解決明顯的壓縮差異,儘管其他人也這樣做。由於你的實際上沒有解決性能問題(你的性能部分實際上是關於工作流程,而不是性能),沒有其他答案可以在一個地方回答所有問題。有趣的是你寫了性能懲罰問題,但你沒有回答它!去搞清楚。 - Mark Adler
順便說一句,您的工作流討論是關於無人做過的事情,即將tar文件寫入磁盤然後壓縮它。 tar總是用於直接調用壓縮程序,或直接用於壓縮程序的管道。 - Mark Adler


性能

最大的區別在於壓縮和歸檔的順序。 tar 歸檔,然後可以選擇將存檔發送到壓縮器,和 zip 構建存檔,並在將文件數據插入存檔時以32 KB塊壓縮文件數據。通過將文件數據分成小塊並單獨壓縮它,它允許您提取特定文件或文件的一部分,而無需在存檔之前解壓縮存檔中的所有內容。它還可以防止壓縮器在重新啟動之前構建一個非常大的字典。這意味著壓縮會更快,但不會像使用較大的字典大小壓縮整個事物一樣好。

您可以通過考慮兩個文件來顯示它,其中第二個文件的前500個字節與第一個文件的最後500個字節相同。隨著 zip 方法,壓縮器重新啟動第二個文件,因此不記得第一個文件以相同的數據結束,因此它無法從第二個文件中刪除重複的數據。

聲望

還有很多其他格式具有許多優勢 tar的7-Zip 不存儲Unix文件權限,但是 dar 是的,和 zip 可以,並且所有三個都存儲索引,允許快速瀏覽,提取文件子集以及更新存檔中的文件。他們還可以使用多核CPU進行壓縮。

每個人仍然使用的原因 tar 是每個人仍然使用Windows的原因相同 :人們不喜歡改變。沒有強烈的改變理由,人們只會堅持他們所知道的。 dar 提供足夠的好處來證明在大多數人已經擁有的格式中發布文件是合理的 tar 安裝,很少知道 dar,如此簡單的慣性使我們保持原有的標準。


11



zip可以存儲和恢復Unix權限。 InfoZIP中的zip和unzip實用程序通常與Unix系統一起分發。 - Mark Adler
zip不會以32K塊壓縮文件。您將32K的滑動窗口大小與壓縮的方式混淆。 - Mark Adler
gzip -9沒有900 kB字典。所有級別的gzip都使用32K字典。你可能會想到bzip2。 - Mark Adler
在一個答案中有如此多的錯誤信息。 - Mark Adler
您需要更正答案或刪除答案。 - Mark Adler


Tar是為了對文件系統進行備份全保真備份而創建的,而不僅僅是為了傳輸文件。因此,tar實用程序是用於創建存檔的最完整的實用程序,該存檔保留了有關文件系統結構的所有重要信息。

這包括一個或多個競爭工具中缺少的所有這些功能:

  • 文件所有權
  • 文件權限
  • 不太常見的文件權限(例如setuid,sticky bit)
  • 象徵性的聯繫
  • 硬鏈接
  • 設備條目(即字符和塊設備)
  • 稀疏文件
  • ACL條目(並非所有版本都支持
  • 擴展/用戶屬性(並非所有版本都支持
  • SElinux標籤(並非所有版本都支持

它也有 --one-file-system 在進行備份時非常有用的選項。

每當向文件系統添加新功能時,都會添加支持 tar第一個(甚至是排他性的)。因此它仍然是保存文件最兼容的方式。


6



這個答案是唯一有意義的答案。謝謝您的發布。 - gaborous