陛下-凯旋归来
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
p>
tar
可使用的参数非常多,先列举几个最常用的参数:
引用
-t,
--list
列出归档文件内容目录
-x, --extract, --get
从归档文件中解析文件
-c,
--create
创建新的归档文件
上面三个参数,不能同时存在,仅能使用其中一个,即
t/x/c
-f file, --file=file
指定备份文件,或设备,例如磁带机
/dev/st0
-v, --verbose
显示命令的执行过程
-Z,
--compress, --uncompress
使用
c
ompress
命令处理备份文件
-z, --gzip, --gunzip, --ungzip
使用
gzip
命令处理备份文件
-j, --I, --bzip
使用
bzip2
命令处理备份文件
-z
和
-j
都是在备份文件打包后才进行压缩的操作的,并且,该操作会影响
其他的参数,后
面会再提到
-C
directory, --directory=directory
先进入指定的目录,再释放
简单使用:
把
/etc
目录中所有的文件打包为
文
件
tar -cvf /tmp/ /etc
把
/etc
目录中所有的文件打包并使用
gzip
压缩为
.gz<
/p>
文件
tar -zcvf
/tmp/
.gz /etc
把
/e
tc
目录中所有的文件打包并使用
bzip2
< br>压缩为
.bz2
文件
这里的,
tar
.gz
或
tar
.bz2
都是惯例,为方便标识的,例如:
tgz
等,并不是特定条
件,但
建议遵循惯例
tar
-jcvf /tmp/
.bz2 /etc
查看备份包中的
内容,若为已经压缩的文件,需加上
-z
或者
< br>-j
参数
tar -ztvf
/tmp/
.gz
默认情况下,
ta
r
打包时都是使用相对路径的,所以,释放时,需要先进入目录目录,然后
再解压
同样的,根据使用的压缩方式,应加上
p>
-z
或者
-j
参数
cd /tmp && tar -zxvf
/tmp/
.gz
这是另一种写法,结果和上面的相同,其会
先进入
/tmp
目录,然后再释放包的
tar -zxvf /tmp/
.gz -C /tmp <
/p>
释放单个
etc/passwd
文件,正
如前面提到的,
tar
包中的是相对路径,所以不能使用
“/etc/passwd”
而且,这里不
能使用
-C
参数,释放文件是当前路径的相对路径,并带目录释
放
tar -zxvf
/tmp/
.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
命令当前执行的文件系统相同,
否则不执行;
也
就是讲,不处理其他分区的文件。
(可忽略<
/p>
mount
挂载分区的问题)
--mode=permissions
备份时,
把加入备份文件中的文件属性修改为指定的属性,
格式和
< br>chmod
命令接受的格式
相同
--group=group
备份时,把加入备份文件中的文件所属组设定成指定的组
--owner=owner
备份时,把把加入备份文件中的文件所有者设定成指定的用户
--numeric-owner
以
UID
和
GID
代替用户名和组名
p>
--recursion
递归模式(默认)
--no-
recursion
不进行递归处理,即不把指定目录下的所有文件和文件夹都备份
--newer-mtime=date
Add only files whose contents have
changed since date to the archive.
仅增加指定日期后修改过内容的文件到备份文件中
--anchored
排除时,排除匹配式中匹配整个文件路径(默认)
--no-anchored
排除时,排除匹配式中可匹配<
/p>
“/”
后的路径
--ignore-case
排除时,排除匹配式中忽略大小写
--no-ignore-case
排除时,排除匹配式中大小写敏感(默认)
--wildcards
排除匹配式支持通配符(默认)
--no-wildcards
排除匹配式不支持通配符
--wildcards-match-slash
排除匹配
式的通配符匹配
“/”
(默认)
--no-wildcards-match-slash
排除匹配式的通配符不匹配
“/”
-X file, --exclude-from file
指定样式文件,供程序执行时剔除符合条件的文件
--remove-files
删除已经加入到备份文件中的文件
举例:
创建当前目录的全备份到
p>
文件
(使用
p>
find
的原因是,这样可以打包所有隐含文件或不符合命令规范的
文件和目录)
tar cvf - `find .
-print` >
比
2005
年
6
月
1
日新的
文件才会备份
tar -N '2005/06/01'
-zcvf
.gz /home
除
/home/dmtsai
目录外,
/home
和
/etc
目录的所有东西都打包
tar --exclude /home/dmtsai -zcvf
.gz /home/* /etc
删除
文件中的
etc/
文件
tar --delete etc/ -vf
把
文件附加到
后面
tar -A -vf