《CentOS.5系统管理》14章--备份与恢复---Linux常用目录及备份

/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 = 恢复到哪里

 

五、常见错误与解决

  1. -f 必须放最后
    错误:tar -zfxv
    正确:tar -zxvf
  1. 恢复时提示覆盖文件
    -w 会提示是否覆盖
     
  2. 权限不足
    sudo 提权:
    bash
    运行
    sudo tar -zxvf backup.tar.gz

总结

  • 恢复文件固定用 -x
  • gz 格式加 -z,bz2 加 -j
  • 指定目录用 -C
  • -t 查看再恢复,更安全

 

 

image

 这里的 -C / 其实是指定了根目录 / 作为恢复的目标位置,不是 “没写”,而是写了一个特殊的目录 /

一、-C / 是什么意思?

-C 选项的作用是切换到指定目录后,再执行解压操作。
  • -C / 表示:先切换到 根目录 /,然后把包里面的文件按原来的路径结构解压进去。
  • 比如包里有个文件是 etc/passwd,加上 -C / 后,就会解压成 /etc/passwd,正好覆盖系统原来的路径,这正是 “全盘恢复” 需要的效果。

二、逐条解析图中的命令

1. 从磁盘文件恢复全部文件

bash
运行
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. 从磁带中恢复全部文件

bash
运行
tar -xvpf /dev/st0 -C /
  • 磁带设备 /dev/st0 本身通常是未压缩的,所以不需要 -z
  • 其他参数含义和上面一样,同样是恢复到根目录 /

三、补充说明:如果不写 -C / 会怎样?

如果去掉 -C /,直接执行:
bash
运行
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/ 等路径下。

 

image

一、从磁盘文件恢复指定文件
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-------

posted @ 2026-04-29 21:53  无聊的蚂蚁  阅读(38)  评论(0)    收藏  举报