Ubuntu Server 18.04.05 LTS通过tar备份恢复后只读文件系统问题求助
解决tar备份恢复后Ubuntu Server只读文件系统及服务异常问题
嘿,我来帮你排查这个问题!先理清楚你的场景:你用tar+pigz备份了Ubuntu 18.04.05的VPS,恢复到FreeNAS上的同版本虚拟机后,系统启动就报一堆只读文件系统错误,Graylog和Nagios跑不起来,但SSH端口、主机名这些配置又能生效。咱们一步步来解决:
问题到底出在哪?
你遇到的核心问题是文件系统只读,背后的原因主要有两个:
- 备份命令犯了致命错误:你把
/usr和/sbin这两个系统核心目录给排除了!/usr里装着几乎所有系统工具、库文件,/sbin是管理员必备的系统命令,缺了它们,系统启动时连正常挂载读写模式的工具都找不到,只能被迫进入只读保护。 - 恢复后的权限/挂载配置异常:就算修复了备份,部分系统目录(比如
/var/log、/var/lib)的权限可能在恢复后乱掉,或者/etc/fstab配置有问题,导致启动时磁盘检测失败,触发只读模式。
分步解决指南
第一步:先把系统从只读模式救出来
重启后先执行这条命令,临时把根文件系统切回读写模式,这样才能修改配置:
sudo mount -o remount,rw /
如果这条命令报错,先检查/etc/fstab里的根分区UUID或者设备路径是不是正确,确保挂载参数里有rw。
第二步:重新生成正确的备份文件
你之前的备份命令完全不能用,必须重新从源服务器生成备份,绝对不能排除/usr和/sbin!用这条命令:
sudo tar -c --use-compress-program=pigz -f correct_backup.tar.gz \ --exclude=/correct_backup.tar.gz \ --exclude=/dev --exclude=/proc --exclude=/sys \ --exclude=/tmp --exclude=/run --exclude=/mnt --exclude=/media \ --exclude=/lost+found \ --exclude=/home/*/.cache --exclude=/home/*/.gvfs --exclude=/home/*/.local/share/Trash \ --exclude=/var/log --exclude=/var/cache/apt/archives \ --exclude=/usr/src/linux-headers* \ --one-file-system /
这里只排除了临时文件、缓存、日志这些非必要内容,核心系统目录全部保留,而且--one-file-system保证只备份根分区的内容,不会误备份其他挂载点。
第三步:重新恢复备份到目标虚拟机
- 先把目标虚拟机的系统重置成全新安装的Ubuntu 18.04.05,确保基础系统能正常启动
- 把新生成的
correct_backup.tar.gz传到目标机,然后执行恢复:
# 先停掉可能冲突的服务(如果系统已经启动) sudo systemctl stop graylog-server nagios3 # 解压备份,保留原始权限和用户ID sudo tar -xvpzf correct_backup.tar.gz -C / --numeric-owner
第四步:修复恢复后的系统配置
- 检查并修复磁盘挂载配置:
打开/etc/fstab,确保根分区的配置类似这样(UUID换成你自己的):
然后执行磁盘检测,避免启动时出错:UUID=abc123-def456 / ext4 errors=remount-ro 0 1sudo fsck -y /dev/[你的根分区设备名,比如sda1] - 修复系统目录权限:
恢复后部分目录权限可能异常,手动修正:# 修复/var/log及子目录权限 sudo chmod 755 /var/log sudo chown root:adm /var/log/landscape # 修复update-notifier相关目录权限 sudo chmod 755 /var/lib/update-notifier sudo chown root:root /var/lib/update-notifier - 重建系统依赖缓存:
sudo ldconfig sudo update-initramfs -u
第五步:验证服务与系统状态
重启系统后,检查服务是否正常启动:
sudo systemctl status graylog-server nagios3
如果还是启动失败,查看具体日志找问题:
# 查看Graylog日志 sudo tail -f /var/log/graylog-server/server.log # 查看Nagios日志 sudo tail -f /var/log/nagios3/nagios.log
日志里会告诉你是配置文件路径不对、权限不足还是依赖缺失,针对性修复就行。
额外提醒
- FreeNAS虚拟机存储:确保虚拟机用的是
raw格式磁盘或者支持读写的块设备,避免存储层面的只读限制 - 备份前的准备:下次备份前最好先停掉Graylog、Nagios这些服务,避免备份时文件处于不一致状态
- 备份工具替代:如果全量备份太麻烦,可以试试
rsync做增量备份,或者用timeshift这种专门的系统备份工具,比手动写tar命令靠谱多了
内容的提问来源于stack exchange,提问作者cinemafunk
相关产品推荐
相关产品推荐

