tar 命令详解 linux入门之文件备份

tar文件是什么

tar是Unix和类Unix系统上的文件打包工具,可以将多个文件打包合并为一个文件。打包后的文件名通常为”*.tar”。另外可通过gzip,bzip2对tar文件进行压缩,压缩后扩展名分别为.tar.gz,.tar.bz2。此外需要注意, 扩展名 在linux下并没有特殊意义,只是为了我们方便记忆。

tar语法

tar参数很多,以下是常用参数:

tar [-j | -z] [cv] [-f 新建文件名] filename          #打包与压缩
tar [-j | -z] [tv] [-f 新建文件名]                   #查看包内文件名
tar [-j | -z] [xv] [-f 新建的文件名]  -C [ 目录]     #解压放置指定目录

arguments:

-c    新建打包文件 ,搭配-v查看打包过程中的文件名
-t    查看打包文件内包含的文件名
-x    解打包或者压缩的功能,搭配-C 在解开到指定目录

-j    通过bzip2进行压缩/解压,文件扩展名为.tar.bz2
-z    通过gzip进行压缩/解压,问价扩展名为.tar.gz
-v    在压缩/解压过程中查看正在处理的文件名
-f    -f 后面接被处理的文件名
-C    -C后面接目录,可在指定目录中解开

-p   保留备份文件原本属性与权限,常用于备份(-c) 重要的配置文件  
-P   保留绝对路径,允许备份数据含有根目录存在

-N   选择出比某个时间点更新的文件(mtime)进行打包
-T   根据-T参数后的样式文件list.txt,进行打包
-A   将一个tar文件附加到另一个tar文件中
--delete  删除打包文件中的某一文件

--exclude=FILE  在压缩过程中,不要将FILE打包

注:此处的-p可以保留原文件的权限和属性。同样,在cp命令中 默认复制后的文件权限和属性会发生变化,因此也可通过-p -a 在复制后保留原文件属性等。

简单使用

[root@www ~] # tar -zpcv -f  /tmp/etc.tar.gz /etc     #打包(-c)并通过gzip(-z)压缩
[root@www ~] # tar -ztv -f  /tmp/etc.tar.gz           #显示文件(-t)如已压缩,需要参数-j -z
[root@www ~] # tar -zpxv -f /tmp/etc.tar.gz -C ~/     #解压(-x)并放到用户主目录下(-C)

进阶使用

1.仅解开压缩文件中的某一个文件

[root@www ~] # tar -zpxv -f /tmp/etc.tar.gz    /etc/shadow   #解压时 在命令后加上文件名称 

2.打包某个目录,但是不含某些文件

#将root目录下除testFile以外的文件打包 并放置到root目录下 
[root@www ~] # tar -zpcv -f /root/root.tar.gz --exclude=/root/testFile --exclude=/root/root.tar.gz /root

注:因为新压缩的文件也放置在root下,故需要把该文件也排除在外

3.仅备份比某个时刻还要新的文件
某些情况下会需要备份新的文件,并不是旧的文件。此时需要参数 -N,–newer-mtime

#将比/etc/passwd mtime更新的文件找出来并且打包到/tmp文件下
[root@www ~] # find -newer /etc/passwd             #将比/etc/passwd mtime更新的文件找出来
[root@www ~] # ll  /etc/passwd                     #查看passed的mtime
[root@www ~] #  tar  -zcvf  /tmp/etc.tar.gz  --newer-mtime="2016/11/19"    /etc/*

4.把tmp.tar文件附加到etc.tar后面

[root@www ~] tar -vf /tmp/etc.tar -A tmp.tar

5.删除etc.tar文件中的etc/passwd文件

[root@www ~] tar -vf /tmp/etc.tar --delete  etc/passwd

6.将list.txt中列出的文件进行压缩

方式一:
[root@www ~] find  /etc   -name  "*.d"  -o  -name  "*.conf" >list.txt
[root@www ~] tar -jcvf /tmp/etc.tar.bz2   -T list.txt
方式二:通过管道
[root@www ~] find  /etc   -name  "*.d"  -o  -name  "*.conf"  |   tar -jcvf /tmp/etc.tar.bz2   -T

7.tar除了把数据打包成文件,还可以将文件打包到某些特殊的设备上。比如将/home /etc /root备份到(/dev/st0)时,可以使用 “tar -cv -f /dev/st0 /home /root /etc”

值得注意的地方

1. -f后面必 须紧跟备份文件,xxx.tar或者xxx.tar.gz
2. 使用–delete、-u、-r、-A的时候,后面跟的备份文件都必须为未压缩的,若备份文件已经压缩,需要使用gunzip先解压,操作完后再 gzip;
也就是说,不能对tar.gz、tar.bz2等文件直接操作的;
3.备份打包时,默认为相对路径;而排除匹配式默认也是全路径匹配的
所以,在打包时,会提示:“tar: Removing leading `/’ from member names”除非你使用-P参数或特定的参数指定

参考:http://blog.chinaunix.net/uid-20639775-id-154567.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值