当前位置:首页 > Linux > 正文

Linux打包文件系统快速指南

在Linux中打包文件系统通常使用tar命令,结合gzip或bzip2压缩,基本格式为: tar -czvf 输出文件名.tar.gz 目录路径(gzip压缩)或 tar -cjvf 输出文件名.tar.bz2 目录路径(bzip2压缩),注意排除/proc等虚拟文件系统。

核心工具:tar命令

tar(Tape Archive)是Linux最常用的打包工具,支持保留文件权限、符号链接等属性。

基本打包操作

# 打包/home目录到backup.tar(不压缩)
sudo tar -cvf backup.tar /home
# 解包
tar -xvf backup.tar
  • -c:创建归档
  • -v:显示过程
  • -f:指定文件名

打包时排除文件

# 排除临时文件和缓存
sudo tar -cvf system_backup.tar --exclude=/var/cache --exclude=/tmp /

保留权限与属性(关键选项)

sudo tar -cpvf full_system.tar /
  • -p:保留文件权限
  • --acls:保留ACL权限
  • --xattrs:保留扩展属性(如SELinux上下文)

压缩归档文件

打包后通常需压缩以节省空间,常用工具有gzipbzip2xz

直接打包并压缩

# 使用gzip(速度快,压缩率中等)
sudo tar -czvf home_backup.tar.gz /home
# 使用bzip2(压缩率高,速度慢)
sudo tar -cjvf home_backup.tar.bz2 /home
# 使用xz(最高压缩率,速度最慢)
sudo tar -cJvf home_backup.tar.xz /home

压缩效率对比

格式 命令后缀 典型压缩率 适用场景
gzip .tar.gz ~70% 快速备份
bzip2 .tar.bz2 ~80% 平衡场景
xz .tar.xz ~90% 长期存储/网络传输

特殊场景处理

打包整个根文件系统

sudo tar -cpzvf full_system.tar.gz 
  --exclude=/proc 
  --exclude=/sys 
  --exclude=/dev 
  --exclude=/mnt 
  --exclude=/media 
  --exclude=/run 
  --exclude=/tmp 
  /

注意:排除虚拟文件系统(如/proc),避免打包无效内容。

Linux打包文件系统快速指南  第1张

处理符号链接

  • 默认行为:tar自动打包符号链接指向的实际文件
  • 仅打包链接本身(不跟随):
    tar -cvhf links_only.tar /path/with/links

    -h:不跟随符号链接。


验证与解包

查看归档内容

tar -tvf backup.tar     # 列出文件
tar -tf backup.tar | grep "keyword"  # 搜索特定文件

解包到指定目录

mkdir restore && tar -xvf backup.tar -C restore/
  • -C:指定解包目录

验证完整性

# 检查压缩包结构
tar -tf backup.tar > /dev/null && echo "Archive OK"
# 实际解压测试(安全方式)
tar -xvf backup.tar --dry-run

替代工具

  1. cpio
    适用于find管道操作:

    find /home -print0 | cpio -ov0 > home_backup.cpio
  2. dd + gzip
    打包块设备(如SD卡):

    sudo dd if=/dev/sdb1 bs=4M | gzip > sdcard.img.gz
  3. rsync
    增量备份场景:

    rsync -a --delete /source/ /backup/

注意事项

  1. 权限问题:打包系统目录需sudo,否则可能遗漏关键文件。
  2. 路径安全:解包时避免覆盖现有文件,建议在空目录测试。
  3. 空间检查:打包前用df -h确保磁盘空间充足。
  4. 大文件分割
    tar -cvzf - /bigdata | split -b 2G - bigdata.tar.gz.part
  5. 加密备份
    tar -czvf - /sensitive | gpg -c > backup.tar.gz.gpg

  • 常规备份:优先用 tar -czvf 打包压缩。
  • 系统迁移:添加 -p 保留权限,排除虚拟目录。
  • 嵌入式部署:结合 xz 高压缩率减少镜像体积。
  • 自动化脚本:搭配 findrsync 实现增量备份。

引用说明基于Linux核心工具手册(GNU tar 1.34, rsync 3.2.7)及Filesystem Hierarchy Standard (FHS 3.0),实践前建议查阅man tar获取系统特定参数。

0