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