Linux 命令(文件和目录管理 - tar)

作者: 一去、二三里
个人微信号: iwaleon
微信公众号: 高效程序员

tar 命令用于将文件打包或解包,扩展名一般为 .tar,指定特定选项可以调用 gzip 或 bzip2 制作压缩包解开压缩包,扩展名为 .tar.gz 或 .tar.bz2。

详细说明

打包和压缩的区别:

  • 打包:将一些文件或目录变成一个总文件
  • 压缩:将一个大的文件通过一些压缩算法变成一个小文件

tar 最初设计用于将文件打包到磁带上,现在大多使用它来实现备份某个分区或者某些重要的目录。

tar 是 Linux 中使用最广泛的命令,用于归档多个文件或目录到单个归档文件中,并且归档文件可以进一步使用 gzip 或者 bzip2 等技术进行压缩。换言之,tar 命令也可以用于备份:先是归档多个文件和目录到一个单独的 tar 文件或归档文件,然后在需要之时将 tar 文件中的文件和目录释放出来。

命令介绍

  • 命令名称
    tar

  • 命令全称
    Tape ARchive(磁带归档)

  • 基本语法
    tar [选项…] [FILE]…

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

命令选项

选项说明
-c建立新的压缩包
-d比较存档与当前文件的不同之处
–delete从压缩包中删除
-r附加到压缩包结尾
-t列出压缩包中文件的目录
-u仅将较新的文件附加到压缩包中
-x解压压缩包
-C解压到指定的目录
-f使用的压缩包名字,f 选项之后不能再加参数
-i忽略存档中的 0 字节块
-v处理过程中输出相关信息
-z调用 gzip 来压缩归档文件,与 -x 联用时调用 gzip 完成解压缩
-Z调用 compress 来压缩归档文件,与 -x 联用时调用 compress 完成解压缩
-j调用 bzip2 压缩或解压
-p使用原文件的原来属性
-P可以使用绝对路径来压缩
–exclude排除不加入压缩包的文件

使用范例

1.创建 tar 归档文件

# 仅打包,不压缩
[wang@localhost doc]$ tar -cvf debug.tar debug.log 
debug.log
# 打包后,以 gzip 压缩
[wang@localhost doc]$ tar -zcvf debug.tar.gz debug.log 
debug.log
# 打包后,以 bzip2 压缩
[wang@localhost doc]$ tar -jcvf debug.tar.bz2 debug.log 
debug.log
[wang@localhost doc]$ ls -al debug*
-rw-rw-r--. 1 wang wang 368640 930 16:23 debug.log
-rw-rw-r--. 1 wang wang 378880 930 16:24 debug.tar
-rw-rw-r--. 1 wang wang   5000 930 16:25 debug.tar.bz2
-rw-rw-r--. 1 wang wang   8401 930 16:24 debug.tar.gz

2.列出归档文件中的内容

在 tar 命令中使用 –t 选项可以不用释放其中的文件,就可以快速列出文件中包含的内容。

[wang@localhost doc]$ tar -tvf debug.tar
-rw-rw-r-- wang/wang    368640 2016-09-30 16:23 debug.log

查看文件是否存在于 tar 文件中

# 由于 log 不存在,打印错误提示
[wang@localhost doc]$ tar -tvf debug.tar log
tar: log:归档中找不到
tar: 由于前次错误,将以上次的错误状态退出
# 存在 debug.log,则输出详细信息
[wang@localhost doc]$ tar -tvf debug.tar debug.log
-rw-rw-r-- wang/wang    368640 2016-09-30 16:23 debug.log

3.追加文件到归档(tar)文件中

选项 -r 用于向已有的 tar 文件中追加文件

# 压缩过的 tar 文件无法进行追加文件操作
[wang@localhost doc]$ tar -rvf debug.tar.gz python/hello.py 
tar: 无法更新压缩归档文件
tar: Error is not recoverable: exiting now
[wang@localhost doc]$ tar -rvf debug.tar python/hello.py 
python/hello.py
# 列出归档文件中的内容
[wang@localhost doc]$ tar -tvf debug.tar
-rw-rw-r-- wang/wang    368640 2016-09-30 16:23 debug.log
-rw-rw-r-- wang/wang        40 2016-09-29 11:06 python/hello.py

4.从 tar 文件中释放文件以及目录

选项 -x 用于释放出 tar 文件中的文件和目录,释放上面创建的 tar 文件中的内容。

[wang@localhost doc]$ tar -xvf debug.tar
debug.log
python/hello.py

假如想释放 tar 文件中的内容到指定的目录,使用 -C 选项后边加上指定的文件的路径。

[wang@localhost doc]$ tar -xvf debug.tar -C /tmp/
debug.log
python/hello.py

5.创建并压缩归档文件(.tar.gz 或 .tgz)

假设需要打包当前目录下的 php 和 linux 文件夹,并用 gzip 工具将其压缩。可以在 tar 命令中使用 -z 选项来实现。这种 tar 文件的扩展名可以是 .tar.gz 或者 .tgz。

[wang@localhost doc]$ tar -zcpvf myArchive.tar.gz php/ linux/
php/
php/hello.php
linux/
linux/hello.sh

6.创建并压缩归档文件(.tar.bz2 或 .tbz2)

假设需要打包当前目录下的 php 和 linux 文件夹,并使用 bzip2 压缩。可以在 tar 命令中使用 -j 选项来实现。这种 tar 文件的扩展名可以是 .tar.bz2 或者 .tbz。

[wang@localhost doc]$ tar -jcpvf myArchive.tar.bz2 php/ linux/
php/
php/hello.php
linux/
linux/hello.sh

7.解压 .tar.gz 或 .tgz 文件

使用 -x 和 -z 选项来解压 .tar.gz 或 .tgz 文件

[wang@localhost doc]$ tar -zxpvf myArchive.tar.gz -C /tmp/
php/
php/hello.php
linux/
linux/hello.sh

以上命令将 tar 文件解压到 /tmp 目录。

注意: tar 命令会在执行解压动作前自动检查文件的压缩类型,可以不用指定文件的压缩类型(可将 -zxpvf-xpvf 代替)。

8.解压 .tar.bz2 或 .tbz2 文件

使用 -j 和 -x 选项来解压 .tar.bz2 或 .tbz2 文件

[wang@localhost doc]$ tar -jxpvf myArchive.tar.bz2 -C /tmp/
php/
php/hello.php
linux/
linux/hello.sh
[wang@localhost doc]$ ls /tmp/

同上,可将 -jxpvf-xpvf 代替)

9.排除指定文件或类型后创建 tar 文件

创建 tar 文件时在 tar 命令中使用 –exclude 选项来排除指定文件或者类型。假设在创建压缩的 tar 文件时要排除 .php 文件。

[wang@localhost doc]$ tar -zcpvf myArchive.tar php/ linux/ --exclude=*.php
php/
linux/
linux/hello.sh

10.进行定时备份

有时需要对指定的文件和目录进行打包,已达到日常备份的目的。假设需要每天备份 php 目录,可以创建一个带 tar 命令的 cron 任务来完成。

[wang@localhost doc]$ tar -zcvf php-backup-$(date +%Y-%m-%d).tgz php/
php/
php/hello.php
[wang@localhost doc]$ ls -l php-*
-rw-rw-r--. 1 wang wang 238 930 18:19 php-backup-2016-09-30.tgz

这些都是日常操作中经常用到的,关于其他用法,可以使用 man tar 或者 tar --help 来查询手册页。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一去丶二三里

有收获,再打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值