Linux命令篇 - tar 命令

HOsystem發表於2023-02-13

tar

GNU `tar' saves many files together into a single tape or disk archive, and can restore individual files from the archive.

tar:用於壓縮和解壓縮檔案;

格式:tar [OPTION...] [FILE]...

# tar命令常用的功能
# 以下功能是獨立的, 一次只能使用一個
- -c: 建立新的tar檔案;
- -x: 解開tar檔案;
- -t: 列出tar檔案中含的檔案的資訊;
- -r: 附加新的檔案到tar檔案中;

# tar命令常用的引數
- -z: 使用gzip進行解壓縮
- -j: 使用bzip2進行解壓縮
- -Z: 使用compress進行解壓縮
- -v: 顯示解壓縮執行過程
- -f: 指定要處理的檔名

# 壓縮
- tar -cvf xxx.tar /data  # 僅對 data 目錄打包不進行壓縮
- tar -zcvf xxx.tar /data # 對 data 目錄打包並以 tar.gz 方式壓縮
- tar -jcvf xxx.tar /data # 對 data 目錄打包並以 tar.bz2 方式壓縮

# 解壓
- tar -xvf xxx.tar # 解包
- tar -zxvf xxx.tar.gz # 解壓 tar.gz 格式壓縮包
- tar -jxvf xxx.tar.bz2 # 解壓 tar.bz2 格式壓縮包
- tat -zxvf xxx.tar.gz etc/passwd # 解壓 tar.gz 格式壓縮包, 直解壓部分資料夾

常用引數:

OPTIONS 意義
-A 新增檔案到以存在的備份檔案
-B 設定區塊大小
-c 建立新的備份檔案
-C <目錄> 僅壓縮指定目錄裡的內容或解壓縮到指定目錄
-d 記錄檔案的差別
-x 從歸檔檔案中提取檔案
-t 列出備份檔案的內容
-z 透過gzip指令壓縮/解壓縮檔案,檔名最好為*.tar.gz
-Z 透過compress指令處理備份檔案
-f<備份檔案> 指定備份檔案
-v 顯示指令執行過程
-r 新增檔案到已經壓縮的檔案
-u 新增改變了和現有的檔案到已經存在的壓縮檔案
-j 透過bzip2指令壓縮/解壓縮檔案,檔名最好為*.tar.bz2
-v 顯示操作過程
-l 檔案系統邊界設定
-k 保留原有檔案不覆蓋
-m 保留檔案不被覆蓋
-w 確認壓縮檔案的正確性
-p 保留原來的檔案許可權與屬性
-P 使用檔名的絕對路徑,不移除檔名稱前的“/”號
-N <日期格式> 只將較指定日期更新的檔案儲存到備份檔案裡
-- -exclude=<範本樣式> 排除符合範本樣式的檔案
-- -remove-files 歸檔/壓縮之後刪除原始檔

參考案例:

壓縮

  • 使用 gzip 壓縮格式對目錄壓縮 .tar.gz
# 使用gzip壓縮格式對某個目錄進行打包操作, 顯示壓縮過程, 壓縮包規範字尾為.tar.gz
# 格式: tar -zcvf 壓縮名稱.tar.gz 檔案目錄
# 格式: tar zcvf 壓縮名稱.tar.gz 檔案目錄
$ tar -zcvf backup1.tar.gz /etc
......
/etc/selinux/targeted/active/modules/100/passenger/cil
/etc/selinux/targeted/active/modules/100/passenger/hll
/etc/selinux/targeted/active/modules/100/passenger/lang_ext
/etc/selinux/targeted/active/modules/100/pcmcia/
......
  • 使用 bzip2 壓縮格式對目錄壓縮 .tar.bz2
# 使用bzip2壓縮格式對某個目錄進行打包操作, 顯示壓縮過程, 壓縮包規範字尾為.tar.bz2
# 格式: tar -jcvf 壓縮名稱.tar.bz2 /etc
$ tar -jcvf backup2.tar.bz2 /etc

# 問題描述: 
## 使用 bz2 需要安裝 bzip2 否則會出現 `tar (child):bzip2: Cannot exec :Nosuch of file or directory` 錯誤
# 解決方法: 
## $ yum install -y bzip2 # 安裝 bzip2 即可解決
  • 對當前目錄的 .cfg 字尾檔案進行打包,不進行壓縮
# 將當前工作目錄內所有以.cfg為字尾的檔案打包, 不進行壓縮
$ tar -cvf backup3.tar *.cfg
  • 對當前目錄的 .cfg 字尾檔案進行打包,不進行壓縮,並刪除原始檔案
$ tar cvf backup4.tar *.cfg --remove-files

解壓

  • .tar 格式壓縮檔案解壓,解壓到當前工作目錄
$ tar -xvf backup3.tar
  • tar.gz 格式壓縮檔案解壓,解壓到當前工作目錄
$ tar -zxvf backup1.tar.gz
  • tar.bz2 格式壓縮檔案解壓,解壓到當前工作目錄
$ tar -jxvf backup2.tar.bz2

# 問題描述:
## 在進行 backup2.tar.bz2 解壓時出現: `tar (child): bzip2: Cannot exec: No such file or directory` 錯誤
# 問題解決:
## $ yum install -y bzip2 # 安裝 bzip2 即可解決
  • tar.gz 格式壓縮檔案解壓,解壓到 /etc 工作目錄
$ tar -zxvf backup1.tar.gz -C /etc

其它操作

  • 檢視壓縮包內檔案資訊(無需解壓)
$ tar -tvf backup4.tar

相關文章