Linux 文件归档命令

tar:磁带归档(tape archive)工具

tar 是 Unix/Linux 系统中最经典的归档工具,最初用于磁带备份,现在在其他存储设备上也能发挥同样出色的作用。它能够将多个文件和目录打包成一个单独的文件,常与压缩工具结合使用。

tar mode[options] [archive-file] [file/directory...]

操作模式(Mode)

模式 全称 描述
-c --create 创建新的归档文件
-x --extract 从归档文件中提取文件
-t --list 列出归档文件内容
-r --append 追加文件到归档末尾
-u --update 仅追加比归档中更新的文件
-d --compare 比较归档与文件系统的差异
-A --catenate 合并多个tar文件
--delete 从归档中删除文件

常用选项

选项 全称 描述
-f --file 指定归档文件名
-v --verbose 显示详细操作信息
-z --gzip 通过gzip压缩/解压归档
-j --bzip2 通过bzip2压缩/解压归档
-J --xz 通过xz压缩/解压归档
--lzma 通过lzma压缩/解压归档
--lzip 通过lzip压缩/解压归档
--lzop 通过lzop压缩/解压归档
-a --auto-compress 根据后缀名自动选择压缩方式
--wildcards 使用通配符匹配文件名
--exclude 排除匹配模式的文件
-T --files-from 从文件读取要处理的文件列表
-X --exclude-from 从文件读取排除模式
-C --directory 指定工作目录

常用扩展名约定

扩展名 含义 创建命令
.tar 未压缩的tar归档 tar cf archive.tar files
.tar.gz
.tgz
gzip压缩的tar归档 tar czf archive.tar.gz files
.tar.bz2
.tbz
.tbz2
bzip2压缩的tar归档 tar cjf archive.tar.bz2 files
.tar.xz
.txz
xz压缩的tar归档 tar cJf archive.tar.xz files
.tar.lzma lzma压缩的tar归档 tar --lzma -cf archive.tar.lzma files
.tar.lzo lzop压缩的tar归档 tar --lzop -cf archive.tar.lzo files
.tar.zst zstd压缩的tar归档 tar --zstd -cf archive.tar.zst files

示例

创建归档

# 创建未压缩的tar归档
tar cf archive.tar file1.txt file2.txt directory/

# 创建gzip压缩的归档
tar czf archive.tar.gz directory/

# 创建bzip2压缩的归档
tar cjf archive.tar.bz2 directory/

# 创建xz压缩的归档(最高压缩率)
tar cJf archive.tar.xz directory/

# 根据扩展名自动选择压缩方式
tar caf archive.tgz directory/
tar caf archive.tbz directory/

列出归档内容

# 列出归档内容
tar tf archive.tar

# 详细列出(显示权限、所有者、大小等)
tar tvf archive.tar.gz

# 列出特定目录的内容
tar tvf archive.tar docs/

# 使用通配符列出
tar tvf archive.tar --wildcards '*.txt'

提取归档

# 提取到当前目录
tar xf archive.tar

# 提取到指定目录
tar xf archive.tar -C /path/to/destination/

# 提取gzip压缩的归档
tar xzf archive.tar.gz

# 提取bzip2压缩的归档
tar xjf archive.tar.bz2

# 提取xz压缩的归档
tar xJf archive.tar.xz

# 提取单个文件
tar xf archive.tar file.txt

# 提取多个文件
tar xf archive.tar "file1.txt" "file2.txt"

# 提取匹配模式的文件
tar xf archive.tar --wildcards '*.conf'

排除文件模式

排除特定文件

tar czf backup.tar.gz /home/user \
    --exclude="*.mp3" \
    --exclude="*.mp4" \
    --exclude=".cache" \
    --exclude="Downloads/*.iso"

从文件读取排除列表

cat > exclude.txt << EOF
*.log
*.tmp
.cache
.DS_Store
Thumbs.db
EOF
tar czf backup.tar.gz /home/user -X exclude.txt
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容