最常用的是 x 解開、c 建立、t 查看,f 後面接檔名。先列出封存內容,再解到新資料夾,能避開路徑寫錯和蓋到既有檔案。
動手前:不要直接把來源不明的封存檔解進系統目錄。先用 list 模式查看路徑,建立空目錄後再解壓;GNU tar 與 macOS 內建 bsdtar 的長參數不完全相同。
先看內容,不要急著解
列出 .tar 裡的檔案Linux/macOS
tar -tf archive.tar只讀取清單,不寫入檔案系統。
列出 .tar.gz 裡的檔案Linux/macOS
tar -tzf archive.tar.gzGNU tar 可明確加 z;多數 bsdtar 也能自動判斷。
連權限、大小一起看Linux/macOS
tar -tvf archive.tarv 會顯示成員詳細資料,適合先檢查路徑與權限。
只找清單中的特定名稱Linux/macOS
tar -tf archive.tar | grep 'config'只過濾畫面輸出,不會改變封存檔。
解壓縮
解開 .tarLinux/macOS
mkdir extracted && tar -xf archive.tar -C extracted先建立空資料夾,再用 -C 指定目的地。
解開 .tar.gz/.tgzLinux/macOS
mkdir extracted && tar -xzf archive.tar.gz -C extractedgzip 壓縮格式使用 z;來源目錄不會被刪除。
解開 .tar.bz2Linux/macOS
mkdir extracted && tar -xjf archive.tar.bz2 -C extractedbzip2 格式使用 j。
解開 .tar.xzLinux/macOS
mkdir extracted && tar -xJf archive.tar.xz -C extractedxz 格式使用大寫 J。
解開 .tar.zstGNU tar
mkdir extracted && tar --zstd -xf archive.tar.zst -C extracted需要 tar 編譯時支援 zstd;不確定時先查 tar --help。
只解出單一檔案Linux/macOS
tar -xf archive.tar path/inside/archive.conf成員名稱必須和 tar -tf 顯示的一致。
只解出一個子目錄Linux/macOS
tar -xf archive.tar path/inside/folder/適合大型封存檔,只取需要的目錄。
去掉最外層一級目錄GNU tar/bsdtar
mkdir extracted && tar -xf archive.tar -C extracted --strip-components=1先確認所有成員都真的有共同的第一層,否則可能漏檔。
不覆蓋已存在的檔案GNU tar
tar -xf archive.tar --keep-old-files遇到同名檔會報錯並保留舊檔,適合較保守的解壓。
建立封存檔
把資料夾打成 .tarLinux/macOS
tar -cvf backup.tar folder/只打包、不壓縮;v 會顯示處理中的檔名。
建立 .tar.gzLinux/macOS
tar -czf backup.tar.gz folder/網站備份與原始碼封裝最常見的格式。
建立 .tar.bz2Linux/macOS
tar -cjf backup.tar.bz2 folder/通常比 gzip 慢,壓縮率可能較高。
建立 .tar.xzLinux/macOS
tar -cJf backup.tar.xz folder/壓縮率通常較高,但 CPU 與時間成本也較高。
切換目錄後再打包Linux/macOS
tar -czf site-backup.tar.gz -C /var/www site封存內會從 site/ 開始,不會帶入整段絕對路徑。
排除 cache 與 logGNU tar
tar -czf app.tar.gz app/ --exclude='app/cache' --exclude='*.log'排除規則會依 shell 與 tar 版本解讀,完成後一定用 tar -tf 複核。
從清單指定要打包的檔案GNU tar
tar -czf selected.tar.gz --files-from=file-list.txt清單一行一個相對路徑;先保存並審核清單。
把標準輸出串到 SSHLinux/macOS
tar -czf - folder/ | ssh user@server 'cat > backup.tar.gz'遠端只建立一個檔案;先確認目的端剩餘空間與 SSH 身分。
怎麼確認有做對
- 用 tar -tf 或 tar -tvf 再列一次成員清單。
- 解壓後比較檔案數量與必要檔案是否存在。
- 備份用途應另外比對 checksum,不能只看 tar 結束碼。
常見錯誤
- 把 c 與 x 用反:c 是建立,x 是解開。
- f 後面沒有緊接封存檔名,導致參數被錯誤解讀。
- 來源不明的封存檔可能包含 ../ 或絕對路徑;不要直接用高權限解進正式目錄。
- macOS 的 bsdtar 與 GNU tar 支援的長選項不同。
版本與官方文件
參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。