用 tar 打包与解压文件:从备份到迁移
在 Linux 服务器上工作,备份目录、迁移项目、打包日志几乎每天都会遇到。tar 是最常用的打包工具:它本身只做打包,把多个文件合成一个归档;配合 gzip、bzip2、xz 等压缩工具,又能把体积压下来。一个命令,备份和迁移就都解决了。
最常用的打包命令是 tar -czvf backup.tar.gz /path/to/dir。四个选项各有含义:c 表示创建归档,z 表示用 gzip 压缩,v 显示处理过程,f 指定归档文件名。习惯上把 .tar.gz 简写成 .tgz,意思完全一样。如果只想打包不压缩,去掉 z 即可,得到的是纯 .tar 文件。
打包之前先确认内容,可以用 tar -tzvf backup.tar.gz 列出归档里的文件清单,解压之前先看一眼,能避免把一堆文件直接散到当前目录。解压用 tar -xzvf backup.tar.gz,x 表示解压;加上 -C /目标目录 可以把文件释放到指定位置,而不是当前目录,这是迁移时最常用的写法。
实际备份时总有些文件不想打包,比如 node_modules、.git 或者体积巨大的缓存目录,用 --exclude 可以排除:tar -czvf backup.tar.gz --exclude=node_modules --exclude=.git project/。多个排除条件可以写多次 --exclude,写在归档名之后、源目录之前。
需要定期备份时,不必每次都全量打包。tar 支持增量备份:tar -czvf inc.tar.gz --newer="2026-11-01" project/ 只打包 11 月 1 日之后改过的文件;更系统的做法是用 --listed-incremental 生成快照文件,每次备份只记录变化的部分,恢复时按顺序解压全量包和增量包即可。
还有几个容易踩的坑。第一,tar 打包绝对路径时会自动去掉开头的斜杠,解压时也是相对路径,这是为了安全,防止解压覆盖系统文件;第二,解压时默认保留原文件权限和属主,普通用户解压别人的备份可能出现权限不足,必要时用 --no-same-owner;第三,压缩格式按需选择:gzip 速度最快、兼容性最好,bzip2 压缩率更高,xz 压缩率最高但最慢,日常备份用 gzip 就够了。
掌握 tar 之后,备份就是一条命令的事:写个简单的备份脚本,配合 crontab 每天凌晨自动打包,重要数据再加一份异地同步,一套可用的备份流程就成型了。
- 点赞
- 收藏
- 关注作者
评论(0)