/etc 所有系统配置
/home 所有用户数据
/root 管理员配置
/var 网站、日志、数据库
/usr/local 手动安装软件
/opt 第三方程序
tar 命令恢复文件 完整解析
tar 是 Linux/Unix 下归档 / 压缩 + 恢复的核心命令,恢复文件就是把 .tar/.tar.gz/.tar.bz2 等备份包,解压还原到指定目录。tar [选项] 备份文件.tar.gz
最常用恢复选项(必记)
| 选项 | 作用 |
|---|---|
-x |
extract:提取 / 恢复文件(核心) |
-v |
verbose:显示恢复过程(可选) |
-f |
file:指定备份文件(必须放最后) |
-C |
指定恢复到哪个目录(默认当前目录) |
-z |
处理 .tar.gz 格式 |
-j |
处理 .tar.bz2 格式 |
-t |
只查看包里有什么文件,不恢复(安全) |
四、命令组合记忆口诀
tar -zxvf 包名 -C 目标目录
z= gz 格式x= 恢复v= 看过程f= 指定文件C= 恢复到哪里
五、常见错误与解决
-f必须放最后
错误:tar -zfxv正确:tar -zxvf
-
恢复时提示覆盖文件
加-w会提示是否覆盖 -
权限不足
加sudo提权:bash运行sudo tar -zxvf backup.tar.gz
总结
- 恢复文件固定用
-x - gz 格式加
-z,bz2 加-j - 指定目录用
-C - 先
-t查看再恢复,更安全

这里的 -C / 其实是指定了根目录 / 作为恢复的目标位置,不是 “没写”,而是写了一个特殊的目录 /。
一、-C / 是什么意思?
-C 选项的作用是切换到指定目录后,再执行解压操作。-C /表示:先切换到 根目录/,然后把包里面的文件按原来的路径结构解压进去。- 比如包里有个文件是
etc/passwd,加上-C /后,就会解压成/etc/passwd,正好覆盖系统原来的路径,这正是 “全盘恢复” 需要的效果。
二、逐条解析图中的命令
1. 从磁盘文件恢复全部文件
tar -zxvpf /backups/full-backup_2008-01-29.tar.gz -C /
-z:处理.tar.gz压缩包(gzip 格式)-x:提取 / 恢复文件-v:显示恢复过程-p:保留文件的权限、属主、时间戳(全盘恢复必须用,否则系统权限会乱)-f:指定备份文件路径/backups/full-backup_2008-01-29.tar.gz-C /:解压到系统根目录/,实现 “全盘覆盖恢复”
2. 从磁带中恢复全部文件
tar -xvpf /dev/st0 -C /
- 磁带设备
/dev/st0本身通常是未压缩的,所以不需要-z - 其他参数含义和上面一样,同样是恢复到根目录
/
三、补充说明:如果不写 -C / 会怎样?
-C /,直接执行:tar -zxvpf /backups/full-backup_2008-01-29.tar.gz
- 默认会解压到当前工作目录,而不是根目录。
- 比如你当前在
/root目录执行,就会在/root下生成etc/、home/等目录,变成/root/etc/passwd,而不是/etc/passwd,这就达不到全盘恢复的目的了。
四、一个小坑提醒
-C 后面必须跟一个合法的目录路径,这里的 / 是完全合法的,代表根目录。- 如果你想恢复到其他目录,比如
/tmp/restore,就写:这样文件就会解压到bash运行tar -zxvpf /backups/full-backup_2008-01-29.tar.gz -C /tmp/restore/tmp/restore/etc/、/tmp/restore/home/等路径下。

一、从磁盘文件恢复指定文件
bash运行
tar -zxvpf /backups/full-backup_2008-01-29.tar.gz -C / \ etc/passwd etc/shadow
🔍 参数拆解
表格
参数 作用
-z 表示备份包是 .tar.gz 格式(gzip 压缩)
-x 核心动作:提取 / 恢复文件
-v verbose:显示恢复过程(可选,方便看进度)
-p preserve:保留文件的权限、属主、时间戳(恢复系统关键文件时必须)
-f 指定备份文件路径:/backups/full-backup_2008-01-29.tar.gz
-C / 切换到根目录 /,再解压文件(文件会按原路径还原到 /etc/ 下)
\ 换行符,表示命令还没写完,下一行继续
etc/passwd etc/shadow 指定只恢复这两个文件(路径必须和备份包内的路径完全一致)
✅ 效果
只会从备份包里提取 etc/passwd 和 etc/shadow 这两个文件
加上 -C / 后,它们会被恢复成 /etc/passwd 和 /etc/shadow,正好覆盖系统原文件
其他文件都不会被触碰,适合修复单个损坏的关键文件
二、从磁带中恢复指定文件
bash
运行
tar -xvpf /dev/st0 -C / etc/passwd etc/shadow
🔍 参数拆解
/dev/st0:Linux 下的标准磁带设备,通常是未压缩的,所以不需要 -z
其他参数和上一条完全一致:
-xvpf:提取、显示过程、保留权限、指定设备
-C /:恢复到根目录
etc/passwd etc/shadow:指定要恢复的文件
💡 关键知识点补充
文件路径必须和包内一致必须用 tar -tvf 备份包 先查看包内的文件路径,比如包内是 etc/passwd,就不能写成 /etc/passwd,否则会找不到文件。
为什么要加 -C /?如果不写 -C /,文件会被恢复到当前目录下,比如你在 /root 目录执行,就会生成 /root/etc/passwd,而不是系统真正的 /etc/passwd,达不到修复的目的。
passwd 和 shadow 是什么文件?
/etc/passwd:存储系统用户信息
/etc/shadow:存储用户密码哈希,是系统的关键文件,一旦损坏会导致用户无法登录,所以恢复时必须保留权限(-p)。
⚠️ 实操注意事项
恢复前一定要先备份原文件:
bash
运行
cp -a /etc/passwd /etc/passwd.bak
cp -a /etc/shadow /etc/shadow.bak
恢复完成后,检查文件权限是否正确:
bash运行
ls -l /etc/passwd /etc/shadow
正常情况下:
/etc/passwd 权限是 -rw-r--r--
/etc/shadow 权限是 -rw-------
