6.1 tar:打包备份
生活随笔
收集整理的這篇文章主要介紹了
6.1 tar:打包备份
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
tar命令
在Linux系統里,tar是將多個文件打包在一起,并且可以實現解壓打包的文件的命令。是系統管理員最常用的命令之一,tar命令不但可以實現對多個文件進行打包,還可以對多個文件打包后進行壓縮。 打包是指將一大堆文件或目錄變成一個總的文件,壓縮則是將一個大的文件通過一些壓縮算法變成一個小文件。 tar命令選項的使用有點特殊,對于CentOS、Linux來說,“tar -z”和“tar z”的效果相同,加或不加“”這個符號都是可以的。tar命令選項
z?? ??? ??? ?通過gzip壓縮或解壓 c?? ??? ??? ?創建新的tar包菜 v?? ??? ??? ?顯示詳細的tar命今執行過程 f?? ??? ?? ??指定壓縮文件的名字 t?? ??? ??? ?不解壓查看tar包的內容 p?? ??? ??? ?保持文件的原有屬性 P(大寫)? ? ?以絕對路徑打包,危險參數 j?? ??? ??? ?通過bzip2命令壓縮或解壓 x?? ??? ??? ?解開tar包旅 C?? ??? ??? ?指定解壓的目錄路徑 -exclude=PATTERN?? ?打包時排除不需要處理的文件或目錄 -X 文件名?? ?從指定文件讀取不需要處理的文件或目錄列表 -N 日期? ? ??僅打包比指定日期新的文件,可用于增量打包備份 -h?? ??? ??? ??? ??? ?打包軟鏈接文件指向的真實源文件激 -hard-dereference? ? ?打包硬鏈接文件備份站點目錄html
[root@cs6 ~]# mkdir -p /var/www/html/oldboy/test [root@cs6 ~]# touch /var/www/html/{1..10}.html [root@cs6 ~]# ls /var/www/html/ 10.html 1.html 2.html 3.html 4.html 5.html 6.html 7.html 8.html 9.html oldboy [root@cs6 ~]# cd /var/www/ [root@cs6 www]# ls html [root@cs6 www]# tar zcvf www.tar.gz ./html ./html/ ./html/4.html ./html/7.html ./html/oldboy/ ./html/oldboy/test/ ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html [root@cs6 www]# ll -h www.tar.gz -rw-r--r--. 1 root root 255 May 12 18:20 www.tar.gz[root@cs6 www]# tar ztvf www.tar.gz #<一使用選項-t不解壓就可以查看壓縮包的內容,選項v可以顯示文件的屬性。 drwxr-xr-x root/root 0 2019-05-12 18:19 ./html/ -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/4.html -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/7.html drwxr-xr-x root/root 0 2019-05-12 18:19 ./html/oldboy/ drwxr-xr-x root/root 0 2019-05-12 18:19 ./html/oldboy/test/ -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/9.html -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/2.html -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/5.html -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/3.html -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/6.html -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/10.html -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/1.html -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/8.html[root@cs6 www]# tar ztf www.tar.gz #<==省略v選項。 ./html/ ./html/4.html ./html/7.html ./html/oldboy/ ./html/oldboy/test/ ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html[root@cs6 www]# tar tf www.tar.gz #<=如果不指定z選項,那么tar命令也會自動判斷壓縮包的類型,自動調用gzip命令。 ./html/ ./html/4.html ./html/7.html ./html/oldboy/ ./html/oldboy/test/ ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html
解開壓縮包
[root@cs6 www]# tar zxvf www.tar.gz -C /tmp/ ./html/ ./html/4.html ./html/7.html ./html/oldboy/ ./html/oldboy/test/ ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html [root@cs6 www]# ls /tmp/html/ 10.html 1.html 2.html 3.html 4.html 5.html 6.html 7.html 8.html 9.html oldboy [root@cs6 www]# tar xf www.tar.gz -C /tmp/ #去掉v選項也可以,只要涉及解壓的操作,tar命令都能自動識別壓縮包的質縮類型,但是壓縮時必須要加上z選項。排除打包
[root@cs6 www]# tar zcvf www.tar.gz ./html/ --exclude=html/oldboy/test ./html/ #<==test目錄結尾不要加/,否則不會成功。 ./html/4.html ./html/7.html ./html/oldboy/ ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html [root@cs6 www]# tar zcvf www.tar.gz ./html/ --exclude=html/oldboy/test --exclude=html/oldboy ./html/ #<-=排除2個以上目錄的方法:并列使用多個--exclude。 ./html/4.html ./html/7.html ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html排除多個文件打包參數-X
[root@cs6 www]# cat list.txt 10.html 8.html 1.html 7.html 5.html [root@cs6 www]# tar zcvfX paichu.tar.gz list.txt ./html/ ./html/ ./html/4.html ./html/oldboy/ ./html/oldboy/test/ ./html/9.html ./html/2.html ./html/3.html ./html/6.html打包鏈接文件
[root@cs6 www]# cd /etc/ [root@cs6 etc]# tar zcf local.tar.gz ./rc.local [root@cs6 etc]# tar tvf local.tar.gz lrwxrwxrwx root/root 0 2019-05-05 23:11 ./rc.local -> rc.d/rc.local [root@cs6 etc]# tar zcfh local_h.tar.gz ./rc.local [root@cs6 etc]# tar tvf local_h.tar.gz -rwxr-xr-x root/root 220 2018-06-20 00:12 ./rc.local 通過對比壓縮包內的文件類型,大家應該可以看出其中的區別了吧?用tar的通用選項zcf打包文件時,如果這個文件是鏈接文件如/etc/rc.local,那么tar只會對鏈接文件本身打包,而不是對鏈接文件指向的真實文件打包,因此需要額外使用-h選項將軟鏈接文件對應的實體文件打包。 2.技巧性范例解決tar使用-exclude 選項時遇到的問題。
使用tar的時候,有時候需要排除要壓縮的目錄下的某個子目錄,但此時可能會遇到一個問題,這和要壓縮目錄的相對路徑和絕對路徑的選擇有關。比如: [root@cs6 www]# tar zcvf www.tar.gz ./html/ --exclude=/var/www/html/oldboy/test ./html/ #<==打包路徑為相對路徑,--exclude的路徑為絕對路徑。 ./html/4.html ./html/7.html ./html/oldboy/ ./html/oldboy/test/ #<==沒有成功排除。 ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html[root@cs6 www]# tar zcvf www.tar.gz ./html/ --exclude=html/oldboy/test ./html/ #<==打包路徑為相對路徑,--exclude的路徑為相對路徑。 ./html/4.html ./html/7.html ./html/oldboy/ ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html[root@cs6 www]# tar zcvf www.tar.gz ./html/ --exclude=oldboy/test ./html/ #<==--exclude的相對路徑去掉html也可以。 ./html/4.html ./html/7.html ./html/oldboy/ ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html[root@cs6 www]# tar zcvf www.tar.gz /var/www/html/ --exclude=/var/www/html/oldboy/test tar: Removing leading `/' from member names #<==打包路徑為絕對路徑,--exclude的路徑為絕對路徑。 /var/www/html/ /var/www/html/4.html /var/www/html/7.html /var/www/html/oldboy/ /var/www/html/9.html /var/www/html/2.html /var/www/html/5.html /var/www/html/3.html /var/www/html/6.html /var/www/html/10.html /var/www/html/1.html /var/www/html/8.html[root@cs6 www]# tar zcvf www.tar.gz /var/www/html/ --exclude=html/oldboy/test tar: Removing leading `/' from member names #<==打包路徑為絕對路徑,--exclude的路徑為相對路徑。 /var/www/html/ /var/www/html/4.html /var/www/html/7.html /var/www/html/oldboy/ /var/www/html/9.html /var/www/html/2.html /var/www/html/5.html /var/www/html/3.html /var/www/html/6.html /var/www/html/10.html /var/www/html/1.html /var/www/html/8.html[root@cs6 www]# tar zcvf www.tar.gz /var/www/html/ --exclude=oldboy/test tar: Removing leading `/' from member names #<== --exclude的相對路徑去擇html也可以。 /var/www/html/ /var/www/html/4.html /var/www/html/7.html /var/www/html/oldboy/ /var/www/html/9.html /var/www/html/2.html /var/www/html/5.html /var/www/html/3.html /var/www/html/6.html /var/www/html/10.html /var/www/html/1.html /var/www/html/8.html
若需要打包的目錄為相對路徑,則-exclude后只能接相對路徑。 若需要打包的目錄為絕對路徑,則--exclude后既能接絕對路徑也能接相對路徑。 為方便起見,--exclude的后接路徑和打包路徑應保持形式一致,要么都是相對路徑,要么都是絕對路徑。
打包/etc目錄下所有的普通文件
[root@cs6 /]# ls etc adjtime DIR_COLORS init.d motd [root@cs6 /]# tar zcvf /tmp/etc.tar.gz `find etc/ -type f` #<==使用find找到所有的普通文件,在tar上命令語句中嵌套一個反引號包含的find命令語句。 [root@cs6 /]# ll -h /tmp/etc.tar.gz -rw-r--r--. 1 root root 8.7M May 12 18:46 /tmp/etc.tar.gz 經驗技巧 下面列出打包時的經驗技巧以供大家參考。 1)在打包一個目錄之前,先進入到這個目錄的上一級目錄,然后執行打包命令,這是大部分情況下打包文件的規范操作流程。少數情況下打包需要完整的目錄結構時,也可以使用絕對路徑打包,但是需要注意的是解壓tar包時壓縮包內的文件是否會覆蓋原始文件。 2)打包模型為:tar zcf /路徑/筐tar.gz 相對路徑/蘋果。打包其實就是把蘋果放筐里。總結
以上是生活随笔為你收集整理的6.1 tar:打包备份的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6.3-4 zip、unzip
- 下一篇: 6.2 gzip:压缩或解压文件