Linux 压缩与归档:tar 命令的五个实用用法
【摘要】 Linux 压缩与归档:tar 命令的五个实用用法在服务器运维中,备份目录、迁移项目、打包日志几乎天天都会遇到。tar 是 Linux 下最常用的归档工具,但很多人只记得 tar -zxvf 一个组合。下面整理五个在实际工作中最常用、也最容易踩坑的用法。 一、打包并压缩:选对压缩算法tar 本身只负责"归档"(把多个文件合成一个),压缩由参数指定:tar -czf backup.tar.g...
Linux 压缩与归档:tar 命令的五个实用用法
在服务器运维中,备份目录、迁移项目、打包日志几乎天天都会遇到。tar 是 Linux 下最常用的归档工具,但很多人只记得 tar -zxvf 一个组合。下面整理五个在实际工作中最常用、也最容易踩坑的用法。
一、打包并压缩:选对压缩算法
tar 本身只负责"归档"(把多个文件合成一个),压缩由参数指定:
tar -czf backup.tar.gz /data/app # gzip,速度快,最通用
tar -cjf backup.tar.bz2 /data/app # bzip2,压缩率更高,较慢
tar -cJf backup.tar.xz /data/app # xz,压缩率最高,最慢
经验:日常备份用 gzip;需要长期存档、节省空间时用 xz。如果机器核数多,可以配合 pigz 并行压缩:
tar -I pigz -cf backup.tar.gz /data/app
二、解压到指定目录
很多人解压后发现文件散落在当前目录。用 -C 指定目标目录:
mkdir -p /opt/app
tar -xzf backup.tar.gz -C /opt/app
新版 GNU tar 解压时能自动识别压缩格式,所以 tar -xf 文件名 对 .gz、.bz2、.xz 都适用。
三、不解压先查看内容
解压一个来源不明的包之前,先看里面有什么,避免覆盖已有文件:
tar -tzf backup.tar.gz | head -20
如果第一层不是一个统一的目录,说明解压时会把文件直接铺在当前路径下,最好先建一个空目录再解压。
四、排除不需要的文件
打包项目时,node_modules、日志、缓存往往占了大部分体积,用 --exclude 排除:
tar -czf project.tar.gz \
--exclude='node_modules' \
--exclude='*.log' \
--exclude='.git' \
project/
注意:--exclude 要写在要打包的路径之前,部分版本写在后面会不生效。
五、只解压其中某个文件
从大包里取回一个配置文件,不必全部解压:
tar -xzf backup.tar.gz project/config/app.conf
路径必须与 tar -t 列出的完全一致(包括开头的目录名)。
补充:避免"绝对路径"陷阱
打包时如果写 tar -czf a.tar.gz /etc/nginx,tar 会去掉开头的 / 并提示 “Removing leading ‘/’”。这是保护机制,防止解压时覆盖系统文件。更推荐的写法是切换目录后用相对路径:
tar -czf nginx-conf.tar.gz -C /etc nginx
小结
| 场景 | 命令 |
|---|---|
| 打包压缩 | tar -czf a.tar.gz dir/ |
| 解压到目录 | tar -xf a.tar.gz -C /target |
| 查看内容 | tar -tf a.tar.gz |
| 排除文件 | --exclude='*.log' |
| 解压单个文件 | tar -xf a.tar.gz path/file |
掌握这五个用法,日常的备份、迁移和排查基本就够用了。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)