tar(Tape ARchive)是 Linux 系统中最经典、最可靠的归档与备份工具。它可以将多个文件或目录打包成一个单一的归档文件,并支持通过外部压缩程序(如 gzip、bzip2、xz)对归档文件进行压缩,从而节省存储空间。使用 tar 进行备份的核心在于理解其主命令模式:c(创建归档)、x(提取归档)、t(列出归档内容),以及常用选项 f(指定归档文件名)、v(显示详细信息)、z(通过 gzip 压缩/解压)、j(通过 bzip2 压缩/解压)、J(通过 xz 压缩/解压)。

创建备份归档的基本命令格式为:tar -czvf 备份文件名.tar.gz /要备份的目录。其中 -c 表示创建归档,-z 表示使用 gzip 压缩,-v 输出处理的文件列表,-f 后跟归档文件名。例如,备份 /home/user 目录到 backup_home.tar.gz:tar -czvf backup_home.tar.gz /home/user。若希望使用更高压缩比的 xz,则将 -z 替换为 -J:tar -cJvf backup_home.tar.xz /home/user。
执行完整系统备份时,建议排除不需要的虚拟文件系统(如 /proc、/sys、/dev、/run)以及临时目录 /tmp。使用 --exclude 选项可灵活排除:tar -czvf system_backup.tar.gz / --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run --exclude=/tmp。注意 --exclude 必须在源目录之前指定,且支持通配符模式,例如 --exclude='*.log' 可排除所有 log 文件。
若需要增量备份,tar 本身不直接提供增量功能,但可结合 --listed-incremental 选项实现基于快照文件的增量归档。首次备份时执行:tar -czvf full_backup.tar.gz --listed-incremental=snapshot.snar /data,该命令会创建完整的 /data 备份并记录快照文件 snapshot.snar。后续进行增量备份时,使用相同快照文件:tar -czvf incremental_backup.tar.gz --listed-incremental=snapshot.snar /data,tar 会自动检测自上次备份以来发生变化的文件并仅打包这些变更。恢复时需要先还原全量备份,再按顺序还原增量归档。
查看归档内容而不解压,使用 -t 选项:tar -tzvf backup_home.tar.gz。该命令会列出归档内所有文件的权限、所有者、大小、修改时间等详细信息。若只想确认归档类型,可使用 file 命令检查:file backup_home.tar.gz,输出显示其为 gzip 压缩的 tar 档案。
从备份中提取特定文件或目录,使用 -x 并指定路径。例如从 backup_home.tar.gz 中提取 /home/user/Documents 目录:tar -xzvf backup_home.tar.gz /home/user/Documents。注意提取路径必须与归档中存储的路径完全一致(通常以 / 开头)。若希望提取到当前目录而不保留绝对路径,可以结合 --strip-components=N 选项,其中 N 为要剥离的路径层级数。例如 tar -xzvf backup_home.tar.gz --strip-components=2 会将归档内路径 /home/user/file.txt 提取为 file.txt。
备份到远程服务器时,可借助管道结合 ssh 实现:tar -czvf - /home/user | ssh user@remote "cat > /backup/backup_home.tar.gz"。其中 -f - 表示将归档输出到标准输出,通过管道发送至远程主机。同样,从远程备份还原可用:ssh user@remote "cat /backup/backup_home.tar.gz" | tar -xzvf - -C /restore_dir,-C 指定目标目录。
对于大量小文件的场景,建议使用 -S(处理稀疏文件)及 --checkpoint=1000(每处理 1000 个文件显示进度)等选项优化性能与体验。tar 还支持 --one-file-system 选项,防止递归进入挂载点(如 /mnt、/media),这在备份根文件系统时尤为重要,可避免将外部驱动器内容也打包进去。
恢复备份前,务必确认提取路径不会覆盖当前系统重要文件。建议先将备份提取至临时目录(如 /tmp/restore_test)进行验证。例如:mkdir /tmp/restore_test && tar -xzvf backup_home.tar.gz -C /tmp/restore_test,然后检查目录结构是否正确。对于全系统恢复,需在单用户模式或救援环境中操作,以避免运行中的进程干扰文件写入。
综上,tar 备份的核心要点包括:正确选择压缩算法(gzip 速度适中、兼容性好;bzip2 压缩率更高但慢;xz 压缩率最高但耗时最长);善用 --exclude 排除无关文件;结合 --listed-incremental 实现增量备份;通过 -C 和 --strip-components 灵活控制提取路径。掌握这些参数即可胜任绝大多数 Linux 环境下的备份与恢复任务。

查看详情

查看详情