当前位置: 首页 > news >正文

linux-系统备份与恢复-系统恢复

Linux 系统备份与恢复:系统恢复

1. 概述

Linux 系统的恢复是系统管理的重要组成部分,它指的是在系统崩溃、硬件故障、误操作或安全问题后,恢复系统到可用状态的过程。良好的系统恢复计划可以有效避免数据丢失和业务中断,并确保系统的可靠性和可用性。

系统恢复通常包括数据的恢复、系统配置的恢复以及整个操作系统的恢复。为了确保恢复过程顺利进行,系统管理员通常会提前规划备份策略,并掌握常见的恢复工具和技术。

2. 系统恢复的场景

在 Linux 系统中,常见的需要进行恢复的场景包括:

  • 系统崩溃:由于硬件故障、内核崩溃或其他原因导致系统无法启动。
  • 硬盘故障:硬盘或分区损坏,导致数据丢失或系统无法正常工作。
  • 文件系统损坏:文件系统损坏可能会导致重要文件无法访问或系统无法正常启动。
  • 错误配置:系统管理员误修改了重要配置文件,导致系统不能正常运行。
  • 恶意软件或入侵:系统遭到黑客入侵或恶意软件攻击,需要恢复受损的文件或清理系统。
  • 意外删除重要数据:重要文件、配置或数据库意外被删除,需要从备份中恢复。
3. 恢复的准备工作

在进行系统恢复之前,管理员需要做一些准备工作,以确保恢复操作能够顺利进行。这些工作包括:

  • 检查备份是否可用:确认系统的备份是完整且可用的,定期对备份文件进行校验。
  • 收集系统信息:在系统崩溃之前记录系统配置信息,包括分区表、网络配置、服务配置等。
  • 准备恢复工具:准备一个可引导的 Live CD、USB 或紧急恢复盘,用于在系统无法启动时恢复数据。
4. 使用 GRUB 进行系统恢复

GRUB(Grand Unified Bootloader)是 Linux 系统常用的引导加载程序,负责在系统启动时加载内核。如果系统无法正常启动,可能需要通过 GRUB 进行恢复。

4.1 GRUB 故障恢复

当 GRUB 出现问题时,通常会看到类似于 grub-rescue> 的提示符。可以使用以下步骤进行恢复:

  1. 进入 GRUB 恢复模式

系统在启动时如果进入 grub-rescue> 模式,可以手动引导系统。首先,查看可用分区:

bash    ls    

这将列出所有可用的分区,如 (hd0,msdos1),可以通过这些分区找到 /boot/grub/ 目录所在的分区。

  1. 找到引导分区

逐个尝试列出的分区,找到包含 /boot/grub 的分区。例如:

bash    ls (hd0,msdos1)/boot    

如果找到正确的分区,继续下一步。

  1. 手动引导内核

设置引导分区,并加载 Linux 内核和初始 RAM 磁盘:

bash    set root=(hd0,msdos1)    linux /vmlinuz-version root=/dev/sda1 ro    initrd /initrd.img-version    boot    

这将尝试手动加载内核并启动系统。

  1. 重新安装 GRUB

系统启动后,需要重新安装 GRUB 引导程序以确保下次能正常启动。首先,挂载根分区:

bash    sudo mount /dev/sda1 /mnt    sudo grub-install --root-directory=/mnt /dev/sda    

然后,更新 GRUB 配置:

bash    sudo update-grub    

4.2 使用 GRUB 恢复模式

如果 GRUB 能正常工作,但系统出现问题,可以通过 GRUB 进入恢复模式。启动时,在 GRUB 菜单中选择 Advanced options for Ubuntu,然后选择带有 (recovery mode) 的内核条目。

进入恢复模式后,系统将提供一系列恢复选项,包括:

  • fsck:检查并修复文件系统错误。
  • network:启动网络,以便下载修复工具或更新软件包。
  • root:进入根 shell 以手动修复系统问题。
  • dpkg:修复损坏的包,重新配置软件。
5. 使用 Live CD/USB 恢复系统

如果系统完全无法启动,管理员可以使用 Live CD 或 USB 启动 Linux 系统,并进行恢复操作。

5.1 通过 Live CD 访问文件系统
  1. 启动 Live CD/USB

将 Live CD 或 USB 插入计算机,并从中启动系统。常用的 Live 系统包括 Ubuntu Live、SystemRescueCD 等。

  1. 挂载受损系统的分区

在 Live 系统中打开终端,列出系统的硬盘分区:

bash    sudo fdisk -l    

挂载根分区和其他分区:

bash    sudo mount /dev/sda1 /mnt    

如果系统有 /boot/home 等独立分区,还需要挂载它们:

bash    sudo mount /dev/sda2 /mnt/boot    sudo mount /dev/sda3 /mnt/home    

  1. 修复文件系统

使用 fsck 工具检查并修复文件系统损坏:

bash    sudo fsck /dev/sda1    

  1. 修复系统文件

如果系统文件或配置被损坏,可以通过重新安装或修复软件包来解决问题。首先挂载必要的虚拟文件系统:

bash    sudo mount --bind /dev /mnt/dev    sudo mount --bind /proc /mnt/proc    sudo mount --bind /sys /mnt/sys    

然后通过 chroot 进入受损系统的环境:

bash    sudo chroot /mnt    

现在可以重新安装或修复系统文件,例如:

bash    sudo apt-get update    sudo apt-get install --reinstall <package_name>    

  1. 修复引导加载程序

如果 GRUB 被破坏,可以使用 Live 系统重新安装 GRUB。挂载分区后,使用 grub-install 安装 GRUB:

bash    sudo grub-install /dev/sda    

然后,更新 GRUB 配置:

bash    sudo update-grub    

6. 文件系统恢复

文件系统的损坏可能导致系统无法访问文件,严重时甚至导致系统崩溃。文件系统恢复的常见工具包括 fscke2fsck,它们用于检查并修复损坏的文件系统。

6.1 使用 fsck 修复文件系统

fsck 是 Linux 中的文件系统检查和修复工具,它可以用于修复损坏的文件系统或恢复丢失的数据。

使用 fsck 检查文件系统:

sudo fsck /dev/sda1
  • 如果文件系统已经挂载,fsck 将无法工作。需要在文件系统卸载或系统启动时运行 fsck
  • 运行 fsck 时,可以选择自动修复错误,也可以手动确认每个修复操作。
6.2 恢复误删除的文件

在某些情况下,误删除的文件仍可以恢复,尤其是当文件刚刚被删除且没有覆盖时。以下是一些常见的恢复工具:

  • TestDisk:一个功能强大的数据恢复工具,可以恢复丢失的分区和文件。它支持多种文件系统,如 ext2/3/4、NTFS、FAT 等。

安装 TestDisk:

bash   sudo apt install testdisk  

运行 TestDisk:

bash   sudo testdisk  

然后按照提示选择分区和文件系统,扫描并恢复文件。

  • Extundelete:用于恢复 ext 文件系统上的删除文件。它能够通过扫描磁盘来恢复被删除的数据。

安装 Extundelete:

bash   sudo apt install extundelete  

使用 Extundelete 恢复文件:

bash   sudo extundelete /dev/sda1 --restore-file /path/to/deleted/file  

7. 系统恢复的最佳实践
  • 定期备份:定期对系统和重要数据进行备份是确保恢复顺利的关键。推荐使用 rsynctarBacula 等工具进行增量备份。
  • 测试恢复流程:定期测试恢复流程,确保备

份数据是完整且可恢复的。

  • 分区管理:将系统和用户数据分开存放在不同的分区或磁盘上,减少系统损坏对用户数据的影响。
  • 制定应急恢复计划:针对各种可能的系统故障(如硬件损坏、软件崩溃、恶意攻击等),制定相应的恢复计划,并提前准备好所需的工具和文档。
8. 总结

Linux 系统的恢复是确保系统高可用性的重要步骤。无论是通过 GRUB 修复引导问题、使用 Live CD 修复文件系统,还是恢复丢失的数据,系统管理员都需要掌握相应的工具和技术。在备份与恢复实践中,定期的备份、良好的分区规划和详细的恢复计划是保证系统恢复成功的关键。

相关文章:

linux-系统备份与恢复-系统恢复

Linux 系统备份与恢复&#xff1a;系统恢复 1. 概述 Linux 系统的恢复是系统管理的重要组成部分&#xff0c;它指的是在系统崩溃、硬件故障、误操作或安全问题后&#xff0c;恢复系统到可用状态的过程。良好的系统恢复计划可以有效避免数据丢失和业务中断&#xff0c;并确保系…...

【Rust语言】std::collections::HashMap用法

HashMap用法文档 文章目录 创建键的要求 增删改查增: insert删: remove/remove_entry改单点修改 get_mut整体修改 values_mut/iter_mut 查集增改于一身的entry 遍历只读遍历into_values() 与 into_keys()容量、实际长度、判空导出清除重定容量 use std::collections::HashMap;创…...

使用SoapUI、Postman工具调用Webservice方法

SoapUI工具更适合调用Webservice使用。 1.使用SoapUI工具调用Webservice 创建“New SOAP Project” 自行定义一个项目名称&#xff0c;输入wsdl地址&#xff1a; 在左侧列表找到方法名&#xff0c;双击“Request 1”, 在请求数据中&#xff0c;添加对应的参数&#xff0c;然…...

js 与 C++引用和指针的关系

js 与 C引用和指针的关系 js 中既有引用的影子, 也有指针的影子。 1、引用用法 这里相当于C 中的引用, b是a的引用, 修改b ,a也改变。 var a { 1: 1 }var b a;a null;b[2] 2;console.error(b); // { 1: 1, 2: 2 }2、指针用法 这里 a,b应该按照指针理解。 var a undef…...

python --PyAibote自动化

官文: https://www.pyaibote.com/ 下载安卓集成环境: 可以看到开发的一些信息...

Ubuntu系统开发环境搭建

一&#xff0c;Android源码编译环境搭建 1 安装Java Development Kit (JDK) sudo apt-get update sudo apt-get install openjdk-8-jdk 2,确认JDK安装成功 java -version 3,安装编译所需的依赖项 sudo apt-get install git-core gnupg flex bison gperf build-essential zip cu…...

lvs-dr模式实验详解

华子目录 lvs-dr&#xff08;企业当中最常用&#xff09;dr模式数据逻辑dr模式数据传输过程dr模式的特点实验拓扑实验主机准备解决vip响应问题限制响应级别:arp_ignore限制通告级别:arp_announce 实验步骤1.client的ip设定2.router上的ip设定3.router开启路由转发功能4.lvs主机…...

【RDMA】mlxconfig修改和查询网卡(固件)配置--驱动工具

目录 简介 工具要求 语法 例子和参数 例子 更多参数 其他工具和查询 简介 mlxconfig 工具允许用户在不重新烧录固件的情况下更改某些设备配置。 配置在重启后仍然保留。 默认情况下&#xff0c;mlxconfig 显示将在下次启动时加载的配置。对于第五代设备&#xff0c;还…...

跨站请求伪造(CSRF)漏洞详解

免责申明 本文仅是用于学习检测自己搭建的DVWA靶场环境有关CSRF的原理和攻击实验,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其所在国家地区相关法…...

Java+Spring Cloud +UniApp 智慧工地源码,用户PC端、移动端数据同步,支持多端展示

数字化给各行各业所带来的改变&#xff0c;在早些年间突出自动这一流程。但随着科技的发展&#xff0c;让人们也愈发了解可视化操作所带来的优势。智慧工地的诞生&#xff0c;相当于为建筑施工带来了一套较为完整的数字化流程&#xff0c;能够完善施工环节中的各部分内容。接下…...

【推广】图书|2024新书《大模型RAG实战:RAG原理、应用与系统构建》汪鹏、谷清水、卞龙鹏等,机械工业出版社

探索RAG系统新高度&#xff1a;《大模型RAG实战&#xff1a;RAG原理、应用与系统构建》 随着大模型技术的爆发&#xff0c;尤其是ChatGPT之后&#xff0c;以ChatPDF为首的知识库问答产品迅速走红&#xff0c;引发了RAG&#xff08;检索增强生成&#xff09;系统的广泛关注与讨论…...

在Unity UI中实现UILineRenderer组件绘制线条

背景介绍 在Unity的UI系统中&#xff0c;绘制线条并不像在3D世界中那样直观(使用Unity自带的LineRender组件在UI中连线并不方便,它在三维中更合适)。没有内置的工具来处理这种需求。如果你希望在UI元素之间绘制连接线&#xff08;例如在UI上连接不同的图标或控件&#xff09;&a…...

C语言中union的用法

在C语言中&#xff0c;union&#xff08;联合体&#xff09;是一种特殊的复合数据类型&#xff0c;它允许多个不同的数据成员共享同一块内存空间。与struct&#xff08;结构体&#xff09;不同的是&#xff0c;union中的所有成员共用同一个内存地址&#xff0c;因此同时只能存储…...

C++速通LeetCode中等第18题-删除链表的倒数第N个结点(最简单含注释)

绝妙&#xff01;快慢指针法,快指针先走n步&#xff08;复杂度O(n),O(1))&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(n…...

鸿蒙 WebView 设置 Header

import { webview } from kit.ArkWebimport { WebHeader } from kit.ArkUI 一共两种方式&#xff1a; 1.把 loadurl的方法写在web组件的生命周期里面 Web({ src:"", controller: this.controller }) .onControllerAttached(()>{ this.controller.loadUrl("…...

电力施工作业安全行为检测图像数据集

电力施工作业安全行为检测图像数据集&#xff0c;图片总共 2300左右&#xff0c;标注为voc(xml)格式&#xff0c;包含高空抛物&#xff0c;未佩戴安全带&#xff0c;高处作业无人监护等。 电力施工作业安全行为检测图像数据集 数据集描述 这是一个专门用于电力施工作业安全行…...

大数据实验2.Hadoop 集群搭建(单机/伪分布式/分布式)

实验二&#xff1a; Hadoop安装和使用 一、实验目的 实现hadoop的环境搭建和安装Hadoop的简单使用&#xff1b; 二、实验平台 操作系统&#xff1a;Linux&#xff08;建议Ubuntu16.04或者18.04&#xff09;&#xff1b;Hadoop版本&#xff1a;3.1.3&#xff1b;JDK版本&…...

【CSS in Depth 2 精译_036】5.6 Grid 网格布局中与对齐相关的属性 + 5.7本章小结

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09; 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位&#xff08;已完结&#xff09; 2.1 相对…...

Qt圆角窗口

Qt圆角窗口 问题&#xff1a;自己重写了一个窗口&#xff0c;发现用qss设置圆角了&#xff0c;但是都不生效&#xff0c;不过子窗口圆角都生效了。 无边框移动窗口 bool eventFilter(QObject *watched, QEvent *evt) {static QPoint mousePoint;static bool mousePressed f…...

研究生第一次刷力扣day1

1.给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出和为目标值target 的那两个整数&#xff0c;并返回它们的数组下标 直接采用暴力求解&#xff0c;其他解答案看不懂 大致思想&#xff1a;先用len函数求出数组的长度n&#xff0c;然后一个个遍…...

Qwen3-ASR-1.7B多说话人分离展示:会议录音自动分角色

Qwen3-ASR-1.7B多说话人分离展示&#xff1a;会议录音自动分角色 会议记录不再需要人工分辨谁说了什么&#xff0c;AI现在能帮你自动区分每个发言人 1. 引言 想象一下这样的场景&#xff1a;一场两小时的多人会议刚刚结束&#xff0c;你需要整理会议纪要。传统的做法是反复听录…...

攻克Hugo-PaperMod菜单故障:导航异常的系统化解决策略

攻克Hugo-PaperMod菜单故障&#xff1a;导航异常的系统化解决策略 【免费下载链接】hugo-PaperMod A fast, clean, responsive Hugo theme. 项目地址: https://gitcode.com/GitHub_Trending/hu/hugo-PaperMod Hugo-PaperMod作为一款轻量级静态站点生成主题&#xff0c;…...

AI编程专栏(三) - Cursor 高级技巧与实战优化

1. Cursor高级功能深度解析 第一次接触Cursor时&#xff0c;你可能觉得它就是个带AI的代码编辑器。但当我真正用它完成一个企业级项目后&#xff0c;才发现那些藏在深处的功能才是真正的生产力神器。比如最近在重构一个老旧的React项目时&#xff0c;通过合理使用MCP协议&#…...

RexUniNLU案例集:制造业设备报修场景中,‘异响’‘漏油’‘停机’故障标签识别效果

RexUniNLU案例集&#xff1a;制造业设备报修场景中&#xff0c;‘异响’‘漏油’‘停机’故障标签识别效果 1. 引言&#xff1a;当设备“说话”时&#xff0c;我们如何听懂&#xff1f; 想象一下这个场景&#xff1a;在一条繁忙的生产线上&#xff0c;一台关键设备突然发出“…...

SenseVoice-Small模型在.NET生态中的集成实践

SenseVoice-Small模型在.NET生态中的集成实践 1. 项目背景与价值 语音识别技术正在快速融入各种应用场景&#xff0c;从智能客服到会议转录&#xff0c;从语音助手到内容创作&#xff0c;处处都能看到它的身影。对于.NET开发者来说&#xff0c;如何在熟悉的生态中集成高质量的…...

解读大数据领域 OLAP 的分布式计算特性

解读大数据领域 OLAP 的分布式计算特性 关键词:OLAP、分布式计算、大数据、MPP架构、列式存储、查询优化、数据仓库 摘要:本文深入探讨OLAP(联机分析处理)在大数据环境下的分布式计算特性。我们将从OLAP的核心概念出发,分析其分布式架构设计原理,包括MPP架构、列式存储和并…...

为什么92%的Java边缘项目因Classloader泄漏失败?揭秘3层隔离沙箱设计与实时热替换机制

第一章&#xff1a;Java边缘计算轻量级运行时开发概览边缘计算场景对运行时环境提出严苛要求&#xff1a;低内存占用&#xff08;通常 ≤ 64MB&#xff09;、毫秒级冷启动、有限依赖、原生支持资源约束设备&#xff08;如 ARM64 IoT 网关、工业 PLC&#xff09;。Java 生态传统…...

OpenClaw技能市场巡礼:百川2-13B-4bits模型适配的10个实用插件

OpenClaw技能市场巡礼&#xff1a;百川2-13B-4bits模型适配的10个实用插件 1. 为什么选择百川2-13B-4bits作为OpenClaw的推理引擎 去年冬天我第一次尝试将量化模型接入OpenClaw时&#xff0c;显存不足的报错让我在MacBook Pro前坐了整整三个晚上。直到遇到百川2-13B-4bits这个…...

DownKyi:B站视频高效解决方案——如何三步搞定8K资源本地化管理

DownKyi&#xff1a;B站视频高效解决方案——如何三步搞定8K资源本地化管理 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印…...

STM32F103开发实录:当Clion的智能补全,遇上CubeMX+Keil5的稳定编译链

STM32F103开发实战&#xff1a;CLion智能编码与Keil5稳定编译的完美融合 第一次接触STM32开发时&#xff0c;我被Keil5那复古的界面和笨重的操作流程震惊了。作为一名习惯了现代IDE的开发者&#xff0c;我一直在寻找既能享受CLion智能编码体验&#xff0c;又能利用Keil5成熟编译…...