tar (Tape Archive) 是 Linux 最通用的打包工具,本身不壓縮,搭配 gzip/bzip2/xz 實現壓縮。善用 tar 可將成百上千個小檔案合併為單一檔案,大幅提升傳輸效率 (避免大量小檔案 FTP/SCP 慢速問題)。
| 參數 | 功能 | 常用組合 |
|---|---|---|
-c | 建立新封存檔 | -cvf (只打包)、-czvf (gzip 壓縮) |
-x | 解開封存檔 | -xvf、-xzvf |
-z | 透過 gzip 壓縮/解壓 (.tar.gz / .tgz) | 速度快、相容性佳 |
-j | 透過 bzip2 壓縮 (.tar.bz2) | 壓縮率較高、速度較慢 |
-J | 透過 xz 壓縮 (.tar.xz) | 壓縮率最高、最耗 CPU |
-v | 顯示處理檔案清單 | 除錯用,大量檔案建議關閉 |
-f | 指定封存檔名稱 (必須緊接檔名) | -f backup.tar.gz |
-C | 切換工作目錄 (解壓時指定目的地) | -C /target/path |
--exclude | 排除特定檔案/目錄 | --exclude='*.log' --exclude='cache/' |
-M | 建立多卷封存 (分卷備份) | 搭配 -L 指定單卷大小 (KB) |
tar -cvf /backup/www_$(date +%F).tar /home/wwwroot/
tar -czvf /backup/www_$(date +%F).tar.gz /home/wwwroot/
tar -czvf /backup/www.tar.gz --exclude='*/node_modules' --exclude='*/.git' --exclude='*/cache' /home/wwwroot/
mkdir -p /restore
tar -xzvf /backup/www.tar.gz -C /restore
# 建立每卷 1GB 的多卷封存
tar -cvML 1048576 -f /backup/part.tar /home/wwwroot/
# 解壓時依序提供卷檔名
tar -xvMf /backup/part.tar
# 本地打包並透過 SSH 直接存到遠端 (不佔本地空間)
tar -czf - /home/wwwroot/ | ssh user@backupserver "cat > /backup/www_$(date +%F).tar.gz"
# 遠端打包直接拉回本地
ssh user@server "tar -czf - /home/wwwroot/" | cat > local_backup.tar.gz
-f 後必須立即接檔名,中間不能加其他參數。cd /source/dir 後用相對路徑 tar -czf /backup/file.tar.gz .。tar -c | split -b 2G - backup.tar.gz.part 或直接用 rsync 同步備份。