39-tar 打包壓縮

將文件存儲到歸檔文件中或者從歸檔文件中獲取原始文件,以及爲文件建立歸檔文件linux

tar [option] [modifiers] [file-list]shell

 

參數

file-listtar進行歸檔和提取的文件路徑名列表spa

 

選項

只能使用下面的某一個選項來指定tar要執行的動做。能夠經過在選項後面跟一個或多個修飾符來改變該選項的行爲3d

-c            建立歸檔文件code

-u            將file-list中的文件添加到歸檔文件blog

-x            從歸檔文件中提取file-list並把它寫入磁盤ip

 

修飾符

-C dir                      在進行處理以前將工做目錄切換到dir指定的目錄input

-f filename              使用filename來指出要建立或從中提取的歸檔文件的文件名io

-j                             在建立歸檔文件或從歸檔文件中提取文件時,使用bzip2方式來進行壓縮和解壓縮class

-z                            在建立歸檔文件或從歸檔文件中提取文件時,使用gzip方式來進行壓縮和解壓縮

-v                            列出tar讀或寫的每個文件

-t                             列出歸檔文件中的目錄

-u                            更新歸檔文件

 

示例

生產場景使用案例

 

範例一:將整個 /etc 目錄下的文件所有打包成爲 /tmp/etc.tar

1 [root@linux ~]# tar -cvf /tmp/etc.tar /etc <==僅打包,不壓縮!
2 [root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包後,以 gzip 壓縮
3 [root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包後,以 bzip2 壓縮
4 特別注意,在參數 f 以後的文件檔名是本身取的,咱們習慣上都用 .tar 來做爲辨識。
5 若是加 z 參數,則以 .tar.gz 或 .tgz 來表明 gzip 壓縮過的 tar file6 若是加 j 參數,則以 .tar.bz2 來做爲附檔名啊~
7 上述指令在執行的時候,會顯示一個警告訊息:
8tar: Removing leading `/' from member names』那是關於絕對路徑的特殊設定。

範例二:查閱上述 /tmp/etc.tar.gz 文件內有哪些文件?

[root@linux ~]# tar -ztvf /tmp/etc.tar.gz

由於咱們使用 gzip 壓縮,因此要查閱該 tar file 內的文件時,

就得要加上 z 這個參數了!這很重要的!

範例三:將 /tmp/etc.tar.gz 文件解壓縮在 /usr/local/src 底下

[root@linux ~]# cd /usr/local/src

[root@linux src]# tar -zxvf /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 ~]# cd /tmp

[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd

我能夠透過 tar -ztvf 來查閱 tarfile 內的文件名稱,若是單隻要一個文件,ç 就能夠透過這個方式來下達!注意到! etc.tar.gz 內的根目錄 / 是被拿掉了!

範例五:將 /etc/ 內的全部文件備份下來,而且保存其權限!

[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc

這個 -p 的屬性是很重要的,尤爲是當您要保留本來文件的屬性時!

範例六:在 /home 當中,比 2005/06/01 新的文件才備份

[root@linux ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home

範例七:我要備份 /home, /etc ,但不要 /home/dmtsai

[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

範例八:將 /etc/ 打包後直接解開在 /tmp 底下,而不產生文件!

 1 [root@linux ~]# cd /tmp
 2 
 3 [root@linux tmp]# tar -cvf - /etc | tar -xvf –
 4 
 5 這個動做有點像是 cp -r /etc /tmp 啦~依舊是有其有用途的!
 6 
 7 要注意的地方在於輸出檔變成 - 而輸入檔也變成 - ,又有一個 | 存在~
 8 
 9 這分別表明 standard output, standard input 與管線命令啦!
10 
11 這部分咱們會在 Bash shell 時,再次提到這個指令跟你們再解釋囉!

 

Tips

1.tar只用來打包,但不壓縮包,bzip2和gzip只能用來壓縮單文件但沒法打包壓縮

2.tar -jcvf 和 tar -zcvf 解決了上面的問題

相關文章
相關標籤/搜索