tar备份Linux系统需排除/proc、/sys、/dev、/tmp、/media、/mnt、/lost+found、/selinux等动态或临时目录,用-cvpzf压缩根目录并保留权限;恢复时用-xvpzf -C指定路径,加--numeric-owner防UID/GID错乱,并手动重建被排除目录。

用 tar 备份和恢复 Linux 系统关键目录,核心是打包时排除动态/虚拟文件系统,解压时保留权限并正确指定目标路径。操作本身不难,但细节决定成败。
备份关键目录:排除不该存的,保留该有的
系统根目录(/)是主要备份对象,但以下目录不能或不应包含在归档中:
- /proc、/sys、/dev:内核虚拟文件系统,每次启动动态生成,备份无意义且会出错
- /tmp、/media、/mnt:临时挂载点或缓存数据,通常无需保留
- /lost+found:文件系统修复后自动生成,不用备份
- /selinux(CentOS 5 等老系统):SELinux 上下文可能引发恢复后策略冲突
推荐命令(以 gzip 压缩为例):
sudo tar -cvpzf /backup/centos5-$(date +%Y%m%d).tar.gz / \
--exclude=/proc \
--exclude=/sys \
--exclude=/dev \
--exclude=/tmp \
--exclude=/media \
--exclude=/mnt \
--exclude=/lost+found \
--exclude=/selinux \
--exclude=/backup/centos5-*.tar.gz
其中 -p 保留权限与属主,-z 启用 gzip 压缩,-f 后必须紧跟文件名(且放在最后)。
恢复关键目录:解压到根,重建虚拟结构
恢复前需确保目标分区已挂载(如用 LiveCD 启动后挂载到 /mnt),再执行:
sudo tar -xvpzf /backup/centos5-20260729.tar.gz -C /mnt --numeric-owner
--numeric-owner 避免 UID/GID 映射错误,尤其跨机器恢复时很重要。
解压完成后,手动创建被排除的目录结构(它们在恢复后不存在):
- sudo mkdir /mnt/{proc,sys,dev,tmp}
- 若需重启生效,还需检查 /mnt/boot 是否完整;必要时重装 GRUB 或复制原 /boot 内容
只恢复部分目录或单个文件
不必解压整个包,可用 -t 先查看内容,再精准提取:
- 列出备份包内容:tar -tzf backup.tar.gz | grep etc/
- 只恢复 /etc/passwd:tar -xzf backup.tar.gz etc/passwd -C /
- 恢复整个 /etc 目录:tar -xzf backup.tar.gz etc/ -C /
注意路径写法:包内路径是绝对路径(如 etc/),恢复时不加开头斜杠,否则会尝试写入 /etc/ 而非当前 -C 指定位置。
验证与安全建议
正式恢复前务必做两件事:
- 用 tar -tzf backup.tar.gz | head -20 快速确认包结构合理、没漏关键目录
- 先在测试环境或空目录解压一次(-C /tmp/test-restore),检查权限、链接、大小是否正常
- 备份时加上 --warning=no-file-changed 可忽略运行中文件变动警告(如日志),避免中断


















