tar命令参数及典型示例详解

tar 是 Linux 系统中用于文件打包和压缩的核心工具,以下是其详细用法及示例:

基本概念

  • 打包(Archiving):将多个文件 / 目录合并为单个文件(tar 文件)。
  • 压缩(Compression):可选步骤,通过 gzip/bzip2/xz 等算法减小文件体积。

核心选项

选项 作用
-c 创建新的归档文件
-x 从归档文件中提取内容
-t 查看归档文件的内容列表
-f 指定归档文件的名称
-v 显示操作的详细过程
-z 使用 gzip 压缩 / 解压缩
-j 使用 bzip2 压缩 / 解压缩
-J 使用 xz 压缩 / 解压缩

常见场景示例

1. 创建压缩包

# 创建未压缩的 tar 包
tar -cvf archive.tar /path/to/dir

# 创建 gzip 压缩包(.tar.gz 或 .tgz)
tar -czvf archive.tar.gz /path/to/dir

# 创建 bzip2 压缩包(.tar.bz2)
tar -cjvf archive.tar.bz2 /path/to/dir

# 创建 xz 压缩包(.tar.xz,压缩率最高)
tar -cJvf archive.tar.xz /path/to/dir

2. 解压文件

# 解压到当前目录
tar -xvf archive.tar

# 解压到指定目录
tar -xvf archive.tar -C /target/dir

# 解压特定格式的压缩包
tar -xzvf archive.tar.gz  # gzip
tar -xjvf archive.tar.bz2 # bzip2
tar -xJvf archive.tar.xz  # xz

3. 查看压缩包内容

tar -tvf archive.tar.gz

4. 排除特定文件 / 目录

# 排除 .log 文件和 tmp 目录
tar -czvf backup.tar.gz --exclude='*.log' --exclude='/path/to/tmp' /path/to/backup

5. 追加文件到已有 tar 包(仅适用于未压缩的 tar)

tar -rvf archive.tar new_file.txt

6. 压缩特定类型的文件

tar -czvf images.tar.gz *.jpg *.png

高级技巧

  1. 保留文件属性:添加 -p 选项。

    tar -czpvf backup.tar.gz /etc
  2. 增量备份:使用 --listed-incremental 选项。
    tar -czvf backup.tar.gz --listed-incremental=/path/to/snapshot.snar /data
  3. 远程传输并解压:结合 ssh 和管道。
    # 从远程服务器下载并解压
    ssh user@server 'tar -czf - /data' | tar -xzvf -

压缩格式对比

格式 扩展名 压缩率 速度
未压缩 .tar 0% 最快
gzip .tar.gz/.tgz 中等 中等
bzip2 .tar.bz2 较高 较慢
xz .tar.xz 最高 最慢

常见错误处理

  • 权限不足:使用 sudo
  • 解压时提示 "Cannot open: No such file or directory":检查文件路径是否正确。
  • 压缩时提示 "file changed as we read it":文件在压缩过程中被修改,可尝试重新操作。

 

掌握这些用法后,你可以高效管理 Linux 系统中的文件归档和压缩任务。如果需要更复杂的功能,可以查阅 tar 的官方手册(man tar)。
THE END