標籤:linux 壓縮檔 create
Linux下最常用的打包命令就是tar,使用tar命令打包後,就可以用其它的命令來進行壓縮了。tar命令的使用方法
tar命令
[[email protected] ~]# tar [-cxtzjvfpPN] 檔案與目錄 ....
參數:
-c :建立一個壓縮檔的參數指令(create 的意思);
-x :解開一個壓縮檔的參數指令!
-t :查看 tarfile 裡面的檔案!
特別注意,在參數的下達中, c/x/t 僅能存在一個!不可同時存在!
因為不可能同時壓縮與解壓縮。
-z :是否同時具有 gzip 的屬性?亦即是否需要用 gzip 壓縮?
-j :是否同時具有 bzip2 的屬性?亦即是否需要用 bzip2 壓縮?
-v :壓縮的過程中顯示檔案!這個常用,但不建議用在背景執行過程!
-f :使用檔名,請留意,在 f 之後要立即接檔名喔!不要再加參數!
-C(大寫) : 目錄 這個參數用在解壓縮時,若要在特定目錄解壓縮,可以使用這個參數
-p :使用原檔案的原來屬性(屬性不會依據使用者而變)
-P (大寫):可以使用絕對路徑來壓縮!.
-N :比後面接的日期(yyyy/mm/dd)還要新的才會被打包進建立的檔案中!
--exclude FILE:在壓縮的過程中,不要將 FILE 打包!
其實最簡單的使用tar的記憶方法:
壓 縮:tar -zcvf filename.tar.gz 要被壓縮的檔案或目錄名稱
查 看: tar -ztvf filename.tar.gz
解壓縮: tar -zxvf filename.tar.gz -C 欲解壓縮的目錄
tar樣本一:將整個 /etc 目錄下的檔案全部打包成為 /tmp/etc.tar
[[email protected] ~]# tar -cvf /tmp/etc.tar /etc <==僅打包,不壓縮![[email protected] ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包後,以 gzip 壓縮[[email protected] ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包後,以 bzip2 壓縮[[email protected] ~]# ls -lh /tmptotal 36M-rw-r--r--. 1 root root 22M Dec 4 04:38 etc.tar-rw-r--r--. 1 root root 6.6M Dec 4 04:38 etc.tar.bz2-rw-r--r--. 1 root root 7.4M Dec 4 04:38 etc.tar.gz
# 特別注意,在參數 f 之後的檔案檔名是自己取的,我們習慣上都用 .tar 來作為辨識。
# 如果加 z 參數,則以 .tar.gz 或 .tgz 來代表 gzip 壓縮過的 tar file ~
# 如果加 j 參數,則以 .tar.bz2 來作為附檔名啊~
在備份重要的系統資料時,我們可以利用-p參數保留原本檔案的許可權與屬性
# 上述指令在執行的時候,會顯示一個警告訊息:
# 『tar: Removing leading `/‘ from member names』那是關於絕對路徑的特殊設定。
tar例二:在打包一個檔案時,一般從要打包的目錄或檔案的上一層目錄對其打包
如果要打包這個檔案和其絕對路徑時,可以從/開始打包
[[email protected] ~]# tar -zcvf /tmp/etc1.tar.gz /tmp/dingjian <==打包其檔案dingjian與絕對路徑tar: Removing leading `/‘ from member names/tmp/dingjian//tmp/dingjian/aa/tmp/dingjian/dd/tmp/dingjian/cc/tmp/dingjian/bb[[email protected] ~]# cd /tmp <==在檔案上一層目錄只對這個dingjian這個檔案進行打包[[email protected] tmp]# tar -zcvf /tmp/etc2.tar.gz ./dingjian./dingjian/./dingjian/aa./dingjian/dd./dingjian/cc./dingjian/bb
分別解壓出來的路徑:
[[email protected] ~]# lsanaconda-ks.cfg dingjian install.log install.log.syslog tar.sh tmp[[email protected] ~]# tar -zxvf /tmp/etc1.tar.gz [[email protected] ~]# tree tmptmp└── dingjian ├── aa ├── bb ├── cc └── dd[[email protected] ~]# tar -zxvf /tmp/etc2.tar.gz 1 directory, 4 files[[email protected] ~]# tree dingjiandingjian├── aa├── bb├── cc└── dd
tar樣本三:查閱上述 /tmp/目錄中各打包檔案內有哪些檔案?
[[email protected] ~]# tar -tvf /tmp/etc.tar[[email protected] ~]# tar -jtvf /tmp/etc.tar.bz2[[email protected] ~]# tar -ztvf /tmp/etc.tar.gz
# 如果查看bz2 或gz壓縮的檔案就得要加上 j或z 這個參數了!這很重要的!
tar樣本四:將 /tmp/etc.tar.gz 檔案解壓縮在 /usr/local/src 底下
[[email protected] /]# cd /usr/local/src[[email protected] src]# tar -zxvf /tmp/etc.tar.gz
# 在預設的情況下,我們可以將壓縮檔在任何地方解開的!以這個範例來說,
# 我先將工作目錄變換到 /usr/local/src 底下,並且解開 /tmp/etc.tar.gz ,
# 則解開的目錄會在 /usr/local/src/etc 呢!另外,如果您進入 /usr/local/src/etc
# 則會發現,該目錄下的檔案屬性與 /etc/ 可能會有所不同喔!
tar樣本五:將/tmp/etc.tar.gz檔案解壓縮到指定的目錄/root
[[email protected] ~]# tar -zxvf /tmp/etc.tar.gz -C /root[[email protected] ~]# lsanaconda-ks.cfg etc install.log install.log.syslog tar.sh
tar樣本六:在 /tmp 底下,我只想要將 /tmp/etc.tar.gz 內的 etc/passwd 解開而已
[[email protected] tmp]# tar -ztvf etc.tar.gz |grep passwd-rw-r--r-- root/root 146 2012-02-22 19:48 etc/pam.d/passwd-rw-r--r-- root/root 1176 2013-11-05 05:52 etc/passwd--rw-r--r-- root/root 1176 2013-11-05 05:52 etc/passwd-rw------- root/root 0 2013-02-22 08:16 etc/security/opasswd[[email protected] tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwdetc/passwd[[email protected] tmp]# ls -l etctotal 4-rw-r--r--. 1 root root 1176 Nov 5 05:52 passwd
#我們通過tar -ztvf etc.tar.gz 結合管道grep來過濾找出passwd的所在位置
#在解壓過程中etc/passwd不能客成/etc/passwd因為它是記錄在etc.tar.gz內的檔案名稱
tar樣本七:將 /etc/ 內的所有檔案備份下來,並且儲存其許可權!
[[email protected] ~]# tar -zxvpf /tmp/etc.tar.gz /etc
# 這個 -p 的屬性是很重要的,尤其是當您要保留原本檔案的屬性時!
tar樣本八:在 /etc 當中,比 2013/11/01 新的檔案才備份
[[email protected] tmp]# tar -N ‘2013/11/01‘ -zcvf etc_2013.tar.gz /etc
tar樣本九:打包備份目前的目錄下dingjian檔案夾 ,但不打包裡面linuxfile檔案
[[email protected] tmp]# tree dingjiandingjian├── 11├── 22├── 33├── 44├── 55├── aa├── bb├── cc├── dd├── ee├── linuxfile├── q1├── q2└── q3.45 directories, 9 files[[email protected] tmp]# tar --exclude ./dingjian/linuxfile -zcvf dingjian.tar.gz ./dingjian./dingjian/./dingjian/33/./dingjian/aa./dingjian/11/./dingjian/55/./dingjian/dd./dingjian/ee./dingjian/q2./dingjian/cc./dingjian/q1./dingjian/bb./dingjian/44/./dingjian/q3.4./dingjian/22/ [[email protected] tmp]# tar -ztvf dingjian.tar.gzdrwxr-xr-x root/root 0 2013-12-04 09:04 ./dingjian/drwxr-xr-x root/root 0 2013-12-04 09:02 ./dingjian/33/-rw-r--r-- root/root 0 2013-12-04 09:02 ./dingjian/aadrwxr-xr-x root/root 0 2013-12-04 09:02 ./dingjian/11/drwxr-xr-x root/root 0 2013-12-04 09:02 ./dingjian/55/-rw-r--r-- root/root 0 2013-12-04 09:02 ./dingjian/dd-rw-r--r-- root/root 0 2013-12-04 09:02 ./dingjian/ee-rw-r--r-- root/root 0 2013-12-04 09:04 ./dingjian/q2-rw-r--r-- root/root 0 2013-12-04 09:02 ./dingjian/cc-rw-r--r-- root/root 0 2013-12-04 09:04 ./dingjian/q1-rw-r--r-- root/root 0 2013-12-04 09:02 ./dingjian/bbdrwxr-xr-x root/root 0 2013-12-04 09:02 ./dingjian/44/-rw-r--r-- root/root 0 2013-12-04 09:04 ./dingjian/q3.4drwxr-xr-x root/root 0 2013-12-04 09:02 ./dingjian/22/
tar樣本十:打包備份目前的目錄下dingjian檔案夾 ,但不打包裡面字每開頭為q的檔案
[[email protected] tmp]# tree dingjiandingjian├── 11├── 22├── 33├── 44├── 55├── aa├── bb├── cc├── dd├── ee├── linuxfile├── q1├── q2└── q3.4[[email protected] tmp]# tar --exclude=./dingjian/q* -zcvf myfile.tar.gz ./dingjian ./dingjian/./dingjian/33/./dingjian/aa./dingjian/11/./dingjian/55/./dingjian/dd./dingjian/ee./dingjian/linuxfile./dingjian/cc./dingjian/bb./dingjian/44/./dingjian/22/[[email protected] tmp]# tar -ztvf myfile.tar.gz drwxr-xr-x root/root 0 2013-12-04 09:04 ./dingjian/drwxr-xr-x root/root 0 2013-12-04 09:02 ./dingjian/33/-rw-r--r-- root/root 0 2013-12-04 09:02 ./dingjian/aadrwxr-xr-x root/root 0 2013-12-04 09:02 ./dingjian/11/drwxr-xr-x root/root 0 2013-12-04 09:02 ./dingjian/55/-rw-r--r-- root/root 0 2013-12-04 09:02 ./dingjian/dd-rw-r--r-- root/root 0 2013-12-04 09:02 ./dingjian/ee-rw-r--r-- root/root 0 2013-12-04 09:02 ./dingjian/linuxfile-rw-r--r-- root/root 0 2013-12-04 09:02 ./dingjian/cc-rw-r--r-- root/root 0 2013-12-04 09:02 ./dingjian/bbdrwxr-xr-x root/root 0 2013-12-04 09:02 ./dingjian/44/drwxr-xr-x root/root 0 2013-12-04 09:02 ./dingjian/22/
tar執行個體十一:工作環境執行個體:
打包網站目錄/var/www/html 備份到/data 目錄下(最好每次備份按時間
產生不同的備份包)
[[email protected] tmp]# tar -zcvf html_$(date +%F).tar.gz /var/www/htmltar: Removing leading `/‘ from member names/var/www/html/[[email protected] tmp]# lshtml_2013-12-04.tar.gz
tar樣本十二:將 /etc/ 打包後直接解開在 /tmp 底下,而不產生檔案!
[[email protected] ~]# cd /tmp
[[email protected] tmp]# tar -cvf - /etc | tar -xvf -
# 這個動作有點像是 cp -r /etc /tmp 啦~依舊是有其有用途的!
# 要注意的地方在於輸出檔變成 - 而輸入檔也變成 - ,又有一個 | 存在~
# 這分別代表 standard output, standard input 與管線命令啦!
本文出自 “Mr.Xiong`s 營運日誌” 部落格,請務必保留此出處http://mrxiong2017.blog.51cto.com/12559394/1924197
linux解壓和解壓 tar