tar命令详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

tar是Linux环境下最常用的备份工具之一。tar(tap archive)原意为操作磁带文件,但基于Linux的文件操作机制,同样也可适用于普通的磁盘文件。tar可用于建立、还原、查看、管理文件,也可方便的追加新文件到备份文件中,或仅更新部分的备份文件,以及解压、删除指定的文件。熟悉其常用参数,能方便日常的系统管理工作。

一、版本

还是那句,不同的操作系统,tar的命令参数是有点区别的:

引用

# tar --version

tar (GNU tar) 1.14

二、简单操作

命令格式:

tar [options] [tarfile] [other-files]

tar--long-option -function-options files

tar可使用的参数非常多,先列举几个最常用的参数:

引用

-t, --list

列出归档文件内容目录

-x, --extract, --get

从归档文件中解析文件

-c, --create

创建新的归档文件

上面三个参数,不能同时存在,仅能使用其中一个,即t/x/c

-f file, --file=file

指定备份文件,或设备,例如磁带机/dev/st0

-v, --verbose

显示命令的执行过程

-Z, --compress, --uncompress

使用compress命令处理备份文件

-z, --gzip, --gunzip, --ungzip

使用gzip命令处理备份文件

-j, --I, --bzip

使用bzip2命令处理备份文件

-z和-j都是在备份文件打包后才进行压缩的操作的,并且,该操作会影响其他的参数,后面会再提到

-C directory, --directory=directory

先进入指定的目录,再释放

简单使用:

把/etc目录中所有的文件打包为etc.tar文件

tar -cvf /tmp/etc.tar /etc

把/etc目录中所有的文件打包并使用gzip压缩为etc.tar.gz文件

tar -zcvf /tmp/etc.tar.gz /etc

把/etc目录中所有的文件打包并使用bzip2压缩为etc.tar.bz2文件

这里的,tar.gz或tar.bz2都是惯例,为方便标识的,例如:tgz等,并不是特定条件,但建议遵循惯例

tar -jcvf /tmp/etc.tar.bz2 /etc

查看备份包中的内容,若为已经压缩的文件,需加上-z或者-j参数

tar -ztvf /tmp/etc.tar.gz

默认情况下,tar打包时都是使用相对路径的,所以,释放时,需要先进入目录目录,然后再解压

同样的,根据使用的压缩方式,应加上-z或者-j参数

cd /tmp && tar -zxvf /tmp/etc.tar.gz

这是另一种写法,结果和上面的相同,其会先进入/tmp目录,然后再释放包的

tar -zxvf /tmp/etc.tar.gz -C /tmp

释放单个etc/passwd文件,正如前面提到的,tar包中的是相对路径,所以不能使用“/etc/passwd”

而且,这里不能使用-C参数,释放文件是当前路径的相对路径,并带目录释放

tar -zxvf /tmp/etc.tar.gz etc/passwd

tar还可以支持很多额外的参数,方便我们在备份和释放的时候进行控制。

三、更多参数

以三大常见操作为序说明。

1、备份

引用

-d, --diff, --compare

找出归档文件和文件系统的不同之处

-r, --append

将文件附加到归档文件之后

-u, --update

只附加比归档中新的文件

-A, --catenate

将tar 文件附加到归档文件之后

--concatenate

与-A 相同

--delete

从归档文件中删除(不能在磁带上!)

-N date, --newer=date, --after-date=date

只将比指定日期更新的文件保存到备份文件

--exclude=pattern

排除符合查找模式的文件

-P, --absolute-names

备份文件中的文件名使用绝对路径,而不移除文件名前的“/”,默认是相对路径的

-l, --one-file-system

复制文件或目录存放的文件系统必须和tar命令当前执行的文件系统相同,否则不执行;也就是讲,不处理其他分区的文件。(可忽略mount挂载分区的问题)

--mode=permissions

备份时,把加入备份文件中的文件属性修改为指定的属性,格式和chmod命令接受的格式相同

--group=group

备份时,把加入备份文件中的文件所属组设定成指定的组

--owner=owner

备份时,把把加入备份文件中的文件所有者设定成指定的用户

--numeric-owner

以UID和GID代替用户名和组名

--recursion

递归模式(默认)

--no-recursion

不进行递归处理,即不把指定目录下的所有文件和文件夹都备份

--newer-mtime=date

Add only files whose contents have changed since date to the archive.

仅增加指定日期后修改过内容的文件到备份文件中

--anchored

排除时,排除匹配式中匹配整个文件路径(默认)

--no-anchored

排除时,排除匹配式中可匹配“/”后的路径

--ignore-case

排除时,排除匹配式中忽略大小写

--no-ignore-case

排除时,排除匹配式中大小写敏感(默认)

--wildcards

排除匹配式支持通配符(默认)

--no-wildcards

排除匹配式不支持通配符

--wildcards-match-slash

排除匹配式的通配符匹配“/”(默认)

--no-wildcards-match-slash

排除匹配式的通配符不匹配“/”

-X file, --exclude-from file

指定样式文件,供程序执行时剔除符合条件的文件

--remove-files

删除已经加入到备份文件中的文件

举例:

创建当前目录的全备份到backup.tar文件

(使用find的原因是,这样可以打包所有隐含文件或不符合命令规范的文件和目录)tar cvf - `find . -print` > backup.tar

比2005年6月1日新的文件才会备份

tar -N '2005/06/01' -zcvf home.tar.gz /home

除/home/dmtsai目录外,/home和/etc目录的所有东西都打包

tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

删除etc.tar文件中的etc/pbm2ppa.conf文件

tar --delete etc/pbm2ppa.conf -vf etc.tar

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

tar -A tmp.tar -vf etc.tar

相关文档
最新文档