tar語法
#壓縮
tar -czvf ***.tar.gz
tar -cjvf ***.tar.bz2
#解壓縮
tar -xzvf ***.tar.gz
tar -xjvf ***.tar.bz2
tar [主選項+輔選項] 文件或目錄
主選項是必須要有的,它告訴tar要做什么事情。
輔選項是輔助使用的,可以選用。
tar常用命令:
主選項:
-x 從檔案文件中釋放文件。
-c 創建新的檔案文件。如果用戶想備份一個目錄或是一些文件,就要選擇這個選項。
-r 把要存檔的文件追加到檔案文件的末尾。例如用戶已經做好備份文件,又發現還有一個目錄或
是一些文件忘 記備份了,這時可以使用該選項,將忘記的目錄或文件追加到備份文件中。
-t 列出檔案文件的內容,查看已經備份了哪些文件。
-u 更新文件。就是說,用新增的文件取代原備份文件,如果在備份文件中找不到要更新的文件,
則把它追加到備份文件的最后。
輔助選項:
-j 代表使用‘bzip2’程序進行文件的壓縮 tar.bz2
-z 用gzip來壓縮/解壓縮文件,加上該選項后可以將檔案文件進行壓縮,但還原時也一定要使用該
選項進行解壓縮。 tar.gz
-v 詳細報告tar處理的文件信息。如無此選項,tar不報告文件信息。
-b 該選項是為磁帶機設定的,其后跟一數字,用來說明區塊的大小,系統預設值為20(20×512 bytes)。
-f 使用檔案文件或設備,這個選項通常是必選的。
-k 保存已經存在的文件。例如把某個文件還原,在還原的過程中遇到相同的文件,不會進行覆蓋。
-m 在還原文件時,把所有文件的修改時間設定為。
-M 創建多卷的檔案文件,以便在幾個磁盤中存放。
-w 每一步都要求確認。
tar包管理
1、tar包的創建
tar -cvf file.tar file1 file2
tar -zcvf file.tar.gz file1 file2
tar -jcvf file.tar.bz2 file1 file2
2、tar包的查看
tar -tvf file.tar
tar -ztvf file.tar.gz
tar -jtvf file.tar.bz2
3、釋放tar包
tar -xvf file.tar
tar -zxvf file.tar.gz
tar -jxvf file.tar.bz2
范例一:將整個 /etc 目錄下的檔案全部打包成為 /tmp/etc.tar
[root@linux ~] # tar -czvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 壓縮
[root@linux ~] # tar -cjvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 壓縮
# 特別注意,在參數 f 之后的檔案檔名是自己取的,我們習慣上都用 .tar 來作為辨識。
# 如果加 z 參數,則以 .tar.gz 或 .tgz 來代表 gzip 壓縮過的 tar file ~
# 如果加 j 參數,則以 .tar.bz2 來作為附檔名啊~
# 上述指令在執行的時候,會顯示一個警告訊息:
# 『tar: Removing leading `/' from member names 』那是關於絕對路徑的特殊設定。
范例二:查閱上述 /tmp/etc.tar.gz 檔案內有哪些檔案?
# 由於我們使用 gzip 壓縮,所以要查閱該 tar file 內的檔案時,
# 就得要加上 z 這個參數了!這很重要的!
范例三:將 /tmp/etc.tar.gz 檔案解壓縮在 /usr/local/src 底下
[root@linux src] # tar -xzvf /tmp/etc.tar.gz
# 在預設的情況下,我們可以將壓縮檔在任何地方解開的!以這個范例來說,
# 我先將工作目錄變換到 /usr/local/src 底下,並且解開 /tmp/etc.tar.gz ,
# 則解開的目錄會在 /usr/local/src/etc 呢!另外,如果您進入 /usr/local/src/etc
# 則會發現,該目錄下的檔案屬性與 /etc/ 可能會有所不同喔!
范例四:在 /tmp 底下,我只想要將 /tmp/etc.tar.gz 內的 etc/passwd 解開而已
[root@linux tmp] # tar -xzvf /tmp/etc.tar.gz etc/passwd
# 我可以透過 tar -tzvf 來查閱 tarfile 內的文件名稱,如果單只要一個檔案,
# 就可以透過這個方式來下達!注意到! etc.tar.gz 內的根目錄 / 是被拿掉了!
范例五:將 /etc/ 內的所有檔案備份下來,並且保存其權限!
# 這個 -p 的屬性是很重要的,尤其是當您要保留原本檔案的屬性時!
范例六:在 /home 當中,比 2005/06/01 新的檔案才備份
范例七:我要備份 /home, /etc ,但不要 /home/dmtsai
范例八:將 /etc/ 打包后直接解開在 /tmp 底下,而不產生檔案!
[root@linux tmp] # tar -cvf - /etc | tar -xvf -
# 這個動作有點像是 cp -r /etc /tmp 啦~依舊是有其有用途的!
# 要注意的地方在於輸出檔變成 - 而輸入檔也變成 - ,又有一個 | 存在~
# 這分別代表 standard output, standard input 與管線命令啦!
# 這部分我們會在 Bash shell 時,再次提到這個指令跟大家再解釋啰!
++++++++++++++++++++++++++++++++++++++++++++
壓縮的文件,我想解壓到當前目錄下,而不是絕對路徑下,該如何解壓?
tar cxvf mysql.tar.gz 的話,會覆蓋 /var/lib/mysql 下全部文件吧?我現在就一個表壞了,想單獨恢復一個表的資料,而不是恢復全部數據庫,所以要解壓到指定的目錄下,再把那個表資料找不來恢復。
============================================
============================================
這樣的話,解壓后的目錄結構是怎么樣的?
/home/aaa/var/lib/mysql 嗎?
============================================
============================================
所以,樓主的解壓縮不會覆蓋 /var/lib/mysql,只會釋放在當前目錄先,即 ./var/lib/mysql如果想覆蓋的話,在歸檔和解壓時請使用 -P參數:
tar zcvf mysql.tar.gz -P /var/lib/mysql
tar -Pzxvf mysql.tar.gz
============================================
zip:
$ zip -r -q -o shiyanzip /home/shiyan
$ du -h shiyan.zip
$ file shiyan.zip
上面命令將 shiyan 的 home 目錄打包成一個文件,並查看了打包后文件的大小和類型。
第一行命令中,
-r (recursive)參數表示遞歸打包包含子目錄的全部內容,
-q (quit)參數表示為安靜模式,即不向屏幕輸出信息,
-o,表示輸出文件,需在其后緊跟打包輸出文件名。
后面使用du命令查看打包后文件的大小(后面會具體說明該命令)。
- 設置壓縮級別為9和1(9最大,1最小),重新打包:
$ zip -r -9 -q -o shiyanlou_9.zip /home/shiyan -x ~/*.zip
$ zip -r -1 -q -o shiyanlou_1.zip /home/shiyan -x ~/*.zip
$ du -h -d 0 *.zip ~ | sort
74m /home/shiyan
34m shiyan_9.zip
37m shiyan_1.zip
這里添加了一個參數用於設置壓縮級別-[1-9],1表示最快壓縮但體積大,9表示體積最小但耗時最久。
最后那個-x是為了排除我們上一次創建的 zip 文件,否則又會被打包進這一次的壓縮文件中,
注意:這里只能使用絕對路徑,否則不起作用。
我們再用du命令分別查看默認壓縮級別、最低、最高壓縮級別及未壓縮的文件的大小:
- 創建加密zip包
使用-e參數可以創建加密壓縮包:
$ zip -r -e -o shiyan_encryption.zip /home/shiyan
注意: 關於zip命令,因為 Windows 系統與 Linux/Unix 在文本文件格式上的一些兼容問題,
比如換行符(為不可見字符),在 Windows 為 CR+LF(Carriage-Return+Line-Feed:回車加換行),
而在 Linux/Unix 上為 LF(換行),
所以如果在不加處理的情況下,在 Linux 上編輯的文本,在 Windows 系統上打開可能看起來是沒有換行的。
如果你想讓你在 Linux 創建的 zip 壓縮文件在 Windows 上解壓后沒有任何問題,那么你還需要對命令做一些修改:
$ zip -r -l -o shiyanlou.zip /home/shiyanlou
需要加上-l參數將LF轉換為CR+LF來達到以上目的。
使用unzip命令解壓縮zip文件
將shiyanlou.zip解壓到當前目錄:
$ unzip shiyan.zip
使用安靜模式,將文件解壓到指定目錄:
$ unzip -q shiyan.zip -d ziptest
上述指定目錄不存在,將會自動創建。如果你不想解壓只想查看壓縮包的內容你可以使用-l參數:
$ unzip -l shiyanlou.zip
注意: 使用unzip解壓文件時我們同樣應該注意兼容問題,不過這里我們關心的不再是上面的問題,而是中文編碼的問題.
通常 Windows 系統上面創建的壓縮文件,如果有有包含中文的文檔或以中文作為文件名的文件時默認會采用 GBK 或其它編碼,而 Linux 上面默認使用的是 UTF-8 編碼,如果不加任何處理,直接解壓的話可能會出現中文亂碼的問題(有時候它會自動幫你處理),為了解決這個問題,我們可以在解壓時指定編碼類型。
使用-O(英文字母,大寫o)參數指定編碼類型:
unzip -O GBK 中文壓縮文件.zip
rar打包壓縮命令:
