命令简介

tar 是 Linux/Unix 系统中一个非常重要和常用的归档和压缩命令。它可以将多个文件和目录组合成一个单一的压缩文件,便于存储和传输。也可以从该压缩文件中解压出原始文件。

命令格式

1
tar [选项] [文件或目录]

参数说明

参数 描述 备注
-c 创建新的归档文件 tar -cf archive.tar files
-x 解压缩归档文件 tar -xf archive.tar
-t 列出归档文件中的内容 tar -tf archive.tar
-r 向归档文件中追加文件 tar -rf archive.tar newfile
-u 更新归档文件中的文件 只更新较新的文件
-v 显示归档或解压的详细过程 建议使用,便于查看进度
-f 指定归档文件的名称 必选项
-z 使用 gzip 压缩或解压 常用于 .tar.gz 格式
-j 使用 bzip2 压缩或解压 常用于 .tar.bz2 格式
-J 使用 xz 压缩或解压 常用于 .tar.xz 格式
-C 解压到指定目录 tar -xf archive.tar -C /target/dir
–exclude 排除指定的文件或目录 tar --exclude='*.log' -czf archive.tar.gz dir

命令实例

基本用法

1.创建及解压 .tar 格式的亚压缩包

1
2
3
4
5
6
7
8
# 创建:创建名为my-files.tar的压缩包,包含当前目录下的所有文件
tar -cf my-files.tar . # 也可以是 tar -cf my-files.tar file1 file2 file3 ...

# 解压:解压my-files.tar到当前目录
tar -xf my-files.tar

# 解压:解压到指定目录
tar -xf my-files.tar -C /path/to/

2.创建及解压 .bz2 格式的亚压缩包

1
2
3
4
5
6
7
8
# 创建:创建名为my-files.bz2的压缩包,包含当前目录下的所有文件,并使用bzip2压缩
tar -cjf my-files.bz2 . # 也可以是 tar -cjf my-files.bz2 file1 file2 file3 ...

# 解压:解压my-files.bz2到当前目录
tar -xjf my-files.bz2

# 解压:解压到指定目录
tar -xjf my-files.bz2 -C /path/to/

3.创建及解压 .tar.gz 格式的亚压缩包

1
2
3
4
5
6
7
8
# 创建:创建名为my-files.gz的压缩包,包含当前目录下的所有文件,并使用gzip压缩
tar -czf my-files.gz . # 也可以是 tar -czf my-files.tar.gz file1 file2 file3 ...

# 解压:解压my-files.gz到当前目录
tar -xzf my-files.tar.gz

# 解压:解压到指定目录
tar -xzf my-files.tar.gz -C /path/to/

4.列出归档文件内容

1
tar -tvf archive.tar

5.追加文件到归档

1
tar -rvf archive.tar newfile

6.排除文件或目录

1
tar --exclude='*.log' -czvf archive.tar.gz dir1

该命令会创建 dir1 目录的压缩归档文件,但排除了 dir1 目录下所有的 .log 日志文件。

高级用法

1.增量备份

利用 tar 命令的 -N 选项,可以实现增量备份,只备份自上次备份后有修改的文件。

1
2
3
4
5
6
7
8
9
10
#!/bin/bash

backup_dir=/path/to/backups
curr_date=$(date +%Y-%m-%d)
archive_file="$backup_dir/backup-$curr_date.tar.gz"

# 获取上次备份文件
prev_backup=$(ls -t $backup_dir/backup-*.tar.gz | tail -n 1)

tar -cpzN "$prev_backup" "$archive_file" /path/to/source

2.并行压缩

tar 命令支持使用多线程进行压缩和解压缩,以提高效率。

1
2
3
4
5
# 使用 4 个线程进行压缩
tar -czvf archive.tar.gz -p 4 /path/to/source

# 使用 4 个线程进行解压缩
tar -xzvf archive.tar.gz -p 4 -C /target/dir

3.压缩加密

可以使用 gpg 工具对 tar 归档文件进行加密,以保护敏感数据。

1
tar -czvf - /path/to/source | gpg -c > archive.tar.gz.gpg

上面的命令会创建一个加密的 tar.gz 归档文件 archive.tar.gz.gpg。解密时使用:

1
gpg -d archive.tar.gz.gpg | tar -xzvf -

通过以上实例和扩展用法介绍,相信你已经对 tar 命令有了全面的了解。如果还有任何疑问,欢迎随时询问。tar 作为一个非常重要的归档和压缩工具,在日常运维工作中会被广泛使用,熟练掌握它是非常有必要的。