linux基礎命令:tar

1.命令格式:mysql

  tar[必要參數][選擇參數][文件] linux

2.命令功能:sql

  用來壓縮和解壓文件。tar自己不具備壓縮功能。他是調用壓縮功能實現的 shell

3.命令參數:數據庫

  必要參數有以下:spa

  -A 新增壓縮文件到已存在的壓縮code

  -B 設置區塊大小blog

  -c 創建新的壓縮文件ip

  -d 記錄文件的差異input

  -r 添加文件到已經壓縮的文件

  -u 添加改變了和現有的文件到已經存在的壓縮文件

  -x 從壓縮的文件中提取文件

  -t 顯示壓縮文件的內容

  -z 支持gzip解壓文件

  -j 支持bzip2解壓文件

  -Z 支持compress解壓文件

  -v 顯示操做過程

  -l 文件系統邊界設置

  -k 保留原有文件不覆蓋

  -m 保留文件不被覆蓋

  -W 確認壓縮文件的正確性

   可選參數以下:

  -b 設置區塊數目

  -C 切換到指定目錄

  -f 指定壓縮文件

  --help 顯示幫助信息

  --version 顯示版本信息

4.常看法壓/壓縮命令

解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是壓縮!)


.gz
解壓1:gunzip FileName.gz
解壓2:gzip -d FileName.gz
壓縮:gzip FileName

.tar.gz 和 .tgz
解壓:tar zxvf FileName.tar.gz
壓縮:tar zcvf FileName.tar.gz DirName

.bz2
解壓1:bzip2 -d FileName.bz2
解壓2:bunzip2 FileName.bz2
壓縮: bzip2 -z FileName


.tar.bz2
解壓:tar jxvf FileName.tar.bz2
壓縮:tar jcvf FileName.tar.bz2 DirName

.bz
解壓1:bzip2 -d FileName.bz
解壓2:bunzip2 FileName.bz
壓縮:未知

.tar.bz
解壓:tar jxvf FileName.tar.bz
壓縮:未知

.Z
解壓:uncompress FileName.Z
壓縮:compress FileName

.tar.Z
解壓:tar Zxvf FileName.tar.Z
壓縮:tar Zcvf FileName.tar.Z DirName

.zip
解壓:unzip FileName.zip
壓縮:zip FileName.zip DirName

.rar
解壓:rar x FileName.rar
壓縮:rar a FileName.rar DirName 

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

[root@linux ~]# tar -cvf /tmp/etc.tar /etc  <==僅打包,不壓縮!

[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 檔案內有哪些檔案?

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

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

# 我能夠透過 tar -tzvf 來查閱 tarfile 內的文件名稱,若是單隻要一個檔案,

# 就能夠透過這個方式來下達!注意到! etc.tar.gz 內的根目錄 / 是被拿掉了!

 

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

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

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

 

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

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

 

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

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

 

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

[root@linux ~]# cd /tmp

[root@linux tmp]# tar -cvf - /etc | tar -xvf -

# 這個動做有點像是 cp -r /etc /tmp 啦~依舊是有其有用途的!

# 要注意的地方在於輸出檔變成 - 而輸入檔也變成 - ,又有一個 | 存在~

# 這分別表明 standard output, standard input 與管線命令啦!

# 這部分咱們會在 Bash shell 時,再次提到這個指令跟你們再解釋囉!

 

 

++++++++++++++++++++++++++++++++++++++++++++

 

 

tar如何解壓文件到指定的目錄?

 

tar czvf mysql.tar.gz /var/lib/mysql
壓縮的文件,我想解壓到當前目錄下,而不是絕對路徑下,該如何解壓?
tar cxvf mysql.tar.gz 的話,會覆蓋 /var/lib/mysql 下所有文件吧?我如今就一個表壞了,想單獨恢復一個表的資料,而不是恢復所有數據庫,因此要解壓到指定的目錄下,再把那個表資料找不來恢復。

============================================

#tar zxvf mysql.tar.gz -C /home/aaa

============================================

tar zxvf mysql.tar.gz -C /home/aaa
這樣的話,解壓後的目錄結構是怎麼樣的?
/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
相關文章
相關標籤/搜索