Linux命令篇 - tar 命令
tar
GNU `tar' saves many files together into a single tape or disk archive, and can restore individual files from the archive.
tar
:用于压缩和解压缩文件;
格式
:tar [OPTION...] [FILE]...
# tar命令常用的功能
# 以下功能是独立的, 一次只能使用一个
- -c: 创建新的tar文件;
- -x: 解开tar文件;
- -t: 列出tar文件中含的文件的信息;
- -r: 附加新的文件到tar文件中;
# tar命令常用的参数
- -z: 使用gzip进行解压缩
- -j: 使用bzip2进行解压缩
- -Z: 使用compress进行解压缩
- -v: 显示解压缩执行过程
- -f: 指定要处理的文件名
# 压缩
- tar -cvf xxx.tar /data # 仅对 data 目录打包不进行压缩
- tar -zcvf xxx.tar /data # 对 data 目录打包并以 tar.gz 方式压缩
- tar -jcvf xxx.tar /data # 对 data 目录打包并以 tar.bz2 方式压缩
# 解压
- tar -xvf xxx.tar # 解包
- tar -zxvf xxx.tar.gz # 解压 tar.gz 格式压缩包
- tar -jxvf xxx.tar.bz2 # 解压 tar.bz2 格式压缩包
- tat -zxvf xxx.tar.gz etc/passwd # 解压 tar.gz 格式压缩包, 直解压部分文件夹
常用参数:
OPTIONS | 意义 |
---|---|
-A | 新增文件到以存在的备份文件 |
-B | 设置区块大小 |
-c | 建立新的备份文件 |
-C <目录> | 仅压缩指定目录里的内容或解压缩到指定目录 |
-d | 记录文件的差别 |
-x | 从归档文件中提取文件 |
-t | 列出备份文件的内容 |
-z | 通过gzip指令压缩/解压缩文件,文件名最好为*.tar.gz |
-Z | 通过compress指令处理备份文件 |
-f<备份文件> | 指定备份文件 |
-v | 显示指令执行过程 |
-r | 添加文件到已经压缩的文件 |
-u | 添加改变了和现有的文件到已经存在的压缩文件 |
-j | 通过bzip2指令压缩/解压缩文件,文件名最好为*.tar.bz2 |
-v | 显示操作过程 |
-l | 文件系统边界设置 |
-k | 保留原有文件不覆盖 |
-m | 保留文件不被覆盖 |
-w | 确认压缩文件的正确性 |
-p | 保留原来的文件权限与属性 |
-P | 使用文件名的绝对路径,不移除文件名称前的“/”号 |
-N <日期格式> | 只将较指定日期更新的文件保存到备份文件里 |
-- -exclude=<范本样式> | 排除符合范本样式的文件 |
-- -remove-files | 归档/压缩之后删除源文件 |
参考案例:
压缩
- 使用
gzip
压缩格式对目录压缩.tar.gz
# 使用gzip压缩格式对某个目录进行打包操作, 显示压缩过程, 压缩包规范后缀为.tar.gz
# 格式: tar -zcvf 压缩名称.tar.gz 文件目录
# 格式: tar zcvf 压缩名称.tar.gz 文件目录
$ tar -zcvf backup1.tar.gz /etc
......
/etc/selinux/targeted/active/modules/100/passenger/cil
/etc/selinux/targeted/active/modules/100/passenger/hll
/etc/selinux/targeted/active/modules/100/passenger/lang_ext
/etc/selinux/targeted/active/modules/100/pcmcia/
......
- 使用
bzip2
压缩格式对目录压缩.tar.bz2
# 使用bzip2压缩格式对某个目录进行打包操作, 显示压缩过程, 压缩包规范后缀为.tar.bz2
# 格式: tar -jcvf 压缩名称.tar.bz2 /etc
$ tar -jcvf backup2.tar.bz2 /etc
# 问题描述:
## 使用 bz2 需要安装 bzip2 否则会出现 `tar (child):bzip2: Cannot exec :Nosuch of file or directory` 错误
# 解决方法:
## $ yum install -y bzip2 # 安装 bzip2 即可解决
- 对当前目录的
.cfg
后缀文件进行打包,不进行压缩
# 将当前工作目录内所有以.cfg为后缀的文件打包, 不进行压缩
$ tar -cvf backup3.tar *.cfg
- 对当前目录的
.cfg
后缀文件进行打包,不进行压缩,并删除原始文件
$ tar cvf backup4.tar *.cfg --remove-files
- 使用tar命令将文件或目录压缩成tar包
# 压缩单个文件
$ tar -cvf filename.tar filename
# 压缩多个文件
$ tar -cvf archive.tar file1 file2 file3 ...
# 压缩目录
$ tar -cvf directory.tar directory/
# 压缩目录并排除指定文件
$ tar -cvf directory.tar --exclude=pattern directory/
# 压缩目录并使用 gzip 进行压缩
$ tar -cvzf directory.tar.gz directory/
解压
- 对
.tar
格式压缩文件解压,解压到当前工作目录
$ tar -xvf backup3.tar
- 对
tar.gz
格式压缩文件解压,解压到当前工作目录
$ tar -zxvf backup1.tar.gz
- 对
tar.bz2
格式压缩文件解压,解压到当前工作目录
$ tar -jxvf backup2.tar.bz2
# 问题描述:
## 在进行 backup2.tar.bz2 解压时出现: `tar (child): bzip2: Cannot exec: No such file or directory` 错误
# 问题解决:
## $ yum install -y bzip2 # 安装 bzip2 即可解决
- 对
tar.gz
格式压缩文件解压,解压到/etc
工作目录
$ tar -zxvf backup1.tar.gz -C /etc
其它操作
- 查看压缩包内文件信息(无需解压)
$ tar -tvf backup4.tar