打包 壓縮 命令tar zip

tar語法mysql

#壓縮
tar -czvf ***.tar.gz
tar -cjvf ***.tar.bz2
#解壓縮
tar -xzvf ***.tar.gz
tar -xjvf ***.tar.bz2linux

 

 tar  [主選項+輔選項] 文件或目錄
主選項是必需要有的,它告訴tar要作什麼事情。
輔選項是輔助使用的,能夠選用。sql

tar經常使用命令:shell

主選項:
-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包管理
一、tar包的建立
tar -cvf  file.tar file1  file2
tar -zcvf  file.tar.gz  file1  file2
tar -jcvf   file.tar.bz2  file1  file2

二、tar包的查看
tar -tvf  file.tar
tar -ztvf  file.tar.gz
tar -jtvf  file.tar.bz2

三、釋放tar包
tar -xvf  file.tar
tar -zxvf  file.tar.gz
tar -jxvf  file.tar.bz2ui

 

 

 

補充一點   若是須要打包一個文件夾,但其中的幾個文件不須要打包,命令以下編碼

打包test文件夾      test裏的  1  這個文件夾不須要打包加密

[root@localhost /]# cd /usr/testspa

[root@localhost test]# ls.net

1  2  3

 

返回/usr 目錄

[root@localhost test]# cd /usr

[root@localhost usr]# tar -zcvf test.tar.gz --exclude=test/1 test

test/

test/3/

test/3/333.png

test/2/

test/2/222.png

 

果真沒有打包test/1 文件夾 

 

[root@localhost usr]# tar -zcvf test.tar.gz --exclude=test/1 test

                                                  打包命令    包名字      排除文件(注意路徑)    打包文件

 

 

範例一:將整個 /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

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

 

 

 

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打包壓縮命令:

相關文章
相關標籤/搜索