tar命令本质是打包(合并文件为.tar),压缩需配合gzip等工具;基础格式为tar [选项] 文件名.tar 源文件/目录,-f必须置于选项末尾。

在 Linux 中,用 tar 将多个目录打包为一个 .tar 文件非常直接,核心是把多个目录路径按空格分隔,一起传给 tar -cvf 命令。
打包多个目录(不压缩,仅归档)
使用 -c(创建)、-v(显示过程)、-f(指定输出文件名)三个基础参数:
tar -cvf archive.tar dir1/ dir2/ dir3/
-
archive.tar是生成的归档文件名,后缀.tar是约定俗成,非强制但强烈建议; -
dir1/ dir2/ dir3/是你要打包的多个目录(注意末尾斜杠/可省略,但带上更清晰,表示目录而非同名文件); -
-v参数可选,加了会逐行打印正在打包的路径,便于确认内容是否正确。
✅ 示例:打包当前目录下的
logs/和config/tar -cvf backup.tar logs/ config/
打包并同时压缩(推荐日常使用)
单独 .tar 文件不压缩,体积不变。通常我们会一步完成「打包 + 压缩」:
-
gzip 压缩(常用,快且兼容性好) → 生成
.tar.gz或.tgztar -czvf backup.tar.gz logs/ config/
-
bzip2 压缩(压缩率更高,稍慢) → 生成
.tar.bz2tar -cjvf backup.tar.bz2 logs/ config/
-
xz 压缩(最高压缩率,适合长期归档) → 生成
.tar.xztar -cJvf backup.tar.xz logs/ config/
⚠️ 注意:
-z、-j、-J必须和-f配合使用,且-f后紧跟文件名(中间不能有空格)。
实用小技巧
-
排除某个子目录(比如不想打包
logs/archive/):tar -czvf backup.tar.gz --exclude='logs/archive' logs/ config/
-
只打包目录内容,不带父目录层级(避免解压出来多一层):
先进入父目录,再用-C切换并通配:tar -czvf backup.tar.gz -C /path/to/ . # 打包该路径下所有内容,不含路径前缀
-
查看刚打好的包里有什么(不解压):
tar -tzf backup.tar.gz # 对 .tar.gz;若只是 .tar,去掉 z:tar -tf backup.tar
操作简单,关键是参数顺序别错:-c 和 -f 必须成对出现,压缩选项(z/j/J)紧贴 -c 或 -x,文件/目录列表写在最后。


















