zoukankan      html  css  js  c++  java
  • 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 相对路径/苹果。打包其实就是把苹果放筐里。
     
     
     
  • 相关阅读:
    MVC模式-----struts2框架(2)
    MVC模式-----struts2框架
    html的<h>标签
    jsp脚本元素
    LeetCode "Paint House"
    LeetCode "Longest Substring with At Most Two Distinct Characters"
    LeetCode "Graph Valid Tree"
    LeetCode "Shortest Word Distance"
    LeetCode "Verify Preorder Sequence in Binary Search Tree"
    LeetCode "Binary Tree Upside Down"
  • 原文地址:https://www.cnblogs.com/wenyule/p/12214037.html
Copyright © 2011-2022 走看看