linux之tar命令参数分析

时间:2021-10-29 14:32:51

这里只说明一些常用参数,自己不常用的这里忽略,tar是一个集打包\解包\压缩\解压于一体的命令。

用法:tar [选项···] [文件]···

GNU ‘tar’

将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件。

常用示例:

tar -cf archive.tar foo bar #从文件foo bar创建归档文件 archive.tar.

tar -tvf archive.tar #详细列举归档文件archive.tar中的所有文件。

tar -xf archive.tar#展开归档文件archive.tar中的所有文件。

主操作模式:

-A, --catenate,--concatenate 追加tar文件至归档

-c, --create 创建一个新归档

-d, --diff,--compare 找出存档与当前文件的不同

    --delete 从归档中删除

-r, --append 追加文件至归档结尾

-t, --list 列出归档内容

-u, --update 仅追加比归档中文件更新的文件

-x, --extract, --get 从归档中解出文件

设备选择和切换:

-f, --file=ARCHIVE 使用归档文件或ARCHIVE设备

压缩选项:

-a, --auto-compress 使用归档后缀名来决定压缩程序

-j, --bzip2 通过bzip2过滤归档

-J, --xz 通过xz过滤归档

-z, --gzip, --gunzip, --ungzip 通过gzip过滤归档

本地文件选择:

--add -file=FILE 添加指定的FILE至归档

  -C, --directory=DIR 改变至目录 DIR

-v, --verbose 详细的列出处理的文件

--warning=KEYWORD警告控制:

范例(以下范例均以root用户运行):
范例一:将整个 /home 目录下的文件全部打包成为 /usr/backup/home.tar
# tar -cvf/usr/backup/home.tar   /home          <--仅打包,不压缩
# tar -zcvf/usr/backup/home.tar.gz /home    <--打包后,以 gzip 压缩
# tar -jcvf/usr/backup/home.tar.bz2 /home   <--打包后,以 bzip2 压缩
特别注意:在参数 f 之后的文件档名是自己取的,习惯上都用 .tar 来作为辨识。

范例二:查阅上述 /usr/backup/home.tar.gz 文件内有哪些文件?
# tar -ztvf/usr/backup/home.tar.gz
   由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,就得要加上 z 这个参数了!

范例三:将 /usr/backup/home.tar.gz 文件解压缩在 /usr/local/src 底下
方法1:
# cd /usr/local/src
# tar -zxvf/usr/backup/home.tar.gz
方法2:
#tar -zxvf/usr/backup/home.tar.gz -C /usr/local/src/

范例四:在 /tmp 底下,我只想要将 /usr/backup/home.tar.gz 内的 home/root 解开而已
# cd /tmp
# tar -zxvf/usr/backup/home.tar.gz   home/root

范例五:将 /home/ 内的所有文件备份下来,并且保存其权限!
# tar -zxvpf/usr/backup/home.tar.gz /home
注意: 这个 -p 的属性是很重要的,尤其是当要保留原本文件的属性时!
          在 f 之后要立即接档案名!不要再加参数!如上例 tar -zxvfp /usr/backup/home.tar.gz就是错误的写法。

范例六:在 /home 当中,比 2007/06/01 新的文件才备份
# tar -N"2007/06/01" -zcvf home.tar.gz /home

范例七:我要备份 /home, /etc ,但不要 /home/abc
# tar --exclude/home/abc -zcvf myfile.tar.gz /home/* /etc

范例八:将 /home/ 打包后直接解开在 /tmp 底下,而不产生文件!
# cd /tmp
# tar -cvf - /home |tar -xvf -
   要注意的地方在於输出档变成 - ,而输入档也变成 - 。

范例九:在打包/home之后又新建一个用户bcd,现也要将其打包加入/usr/backup/home.tar.gz
#tar -zcvrf/usr/backup/home.tar.gz /home/bcd

 

参考文献:http://zzjnet.blog.51cto.com/323001/318766

GNU tar --help