Linux 下 tar 命令归档与压缩完整指南

存档文件是包含多个文件的单个常规文件或设备文件,可用于创建可管理的个人备份,或者在其他方法(如 rsync)不可用时简化通过网络传输文件的任务。在 Linux 系统中,tar 实用程序是用于创建、管理和提取存档的常用命令。

存档文件可以使用或不使用压缩:

  • 不使用压缩:仅将多个文件打包成一个文件,大小基本不变
  • 使用压缩:通过压缩算法减小存档文件体积

tar 命令基础操作

必需的操作选项

执行 tar 操作需要以下命令操作之一:

  • -c 或 --create:创建存档文件
  • -t 或 --list:列出存档的内容
  • -x 或 --extract:提取存档

常用选项

  • -v 或 --verbose:显示在 tar 操作期间存档或提取的文件
  • -f 或 --file:指定要创建或打开的存档文件名
  • -p 或 --preserve-permissions:提取时保留原始文件权限
  • --xattrs:启用扩展属性支持,存储扩展的文件属性
  • --selinux:启用 SELinux 上下文支持,存储 SELinux 文件上下文

创建存档文件

基本创建命令

要使用 tar 命令创建存档,使用 create 和 file 选项,并将存档文件名作为第一个参数,后跟要纳入存档的文件和目录列表。

1

tar -cf mybackup.tar myapp1.log myapp2.log myapp3.log

重要特性

  • tar 命令可识别绝对和相对文件名语法
  • 默认情况下,tar 从绝对文件名中删除前导正斜杠 (/) 字符,使用相对路径名在内部存储文件
  • 这种技术更为安全,因为使用相对路径名存档文件时,可以将文件提取到新目录而不会覆盖现有文件

权限要求

用户必须具有被归档的目标文件的读取权限。例如,在 /etc 目录中创建归档需要 root 特权,因为只有特权用户才能读取所有 /etc 文件。

查看存档内容

使用 tar 命令的 t 选项可列出通过 f 选项指定的存档中的文件名:

1

tar -tf /root/etc.tar

文件是使用相对名称语法列出的,因为在存档创建期间删除了前导的正斜杠。

提取存档内容

基本提取命令

1

tar -xf /root/etc.tar

最佳实践:将 tar 存档提取到空白目录中,以免覆盖现有的文件。

权限处理

  • 当 root 用户提取存档时,提取的文件会保留原始的用户和组所有权
  • 如果是常规用户提取文件,则该用户将成为所提取文件的所有者
  • 从存档中提取文件时,当前的 umask 用于修改提取的每个文件的权限
  • 使用 tar 命令的 p 选项可保留提取的文件的原始存档权限

1

tar -xpf /home/user/myscripts.tar

压缩存档

支持的压缩算法

tar 命令支持多种压缩方式:

  • gzip 压缩(选项:-z
    • 最快的旧方法,跨平台广泛使用
    • 生成 .tar.gz 或 .tgz 后缀
  • bzip2 压缩(选项:-j
    • 可创建较小的存档,但使用不如 gzip 广泛
    • 生成 .tar.bz2 后缀
  • xz 压缩(选项:-J
    • 更新的技术,提供的压缩率在可用方法中最好
    • 生成 .tar.xz 后缀

创建压缩存档示例

1

2

3

4

5

6

# 使用 gzip 压缩

tar -czf /root/etcbackup.tar.gz /etc

# 使用 bzip2 压缩

tar -cjf /root/logbackup.tar.bz2 /var/log

# 使用 xz 压缩

tar -cJf /root/sshconfig.tar.xz /etc/ssh

验证压缩存档内容

创建存档后,使用 tar 命令的 tf 选项来验证其内容。列出压缩存档文件时,不需要指定压缩选项,因为压缩类型是从存档标头中读取的:

1

tar -tf /root/etcbackup.tar.gz

提取压缩存档

tar 命令可以自动确定使用的压缩方式,因此不需要指定压缩选项:

1

tar -xf /root/etcbackup.tar.gz

注意:如果包含了不正确的压缩类型,tar 将报告指定的压缩类型与文件的类型不匹配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值