资讯专栏INFORMATION COLUMN

Linux也有后悔药,五种方案快速恢复你的系统

20171112 / 3122人阅读

摘要:备份提供了一种非常好的方法来恢复服务器的损坏。您还可以通过检查日志来查看元数据包安装的文件恢复默认文件有时,在配置期间,您需要更改配置文件,并希望恢复默认文件。

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~

本文由信姜缘  发表于云+社区专栏

新手在学习Linux系统的时候,难免会遇到命令输错,或系统出错的难题。那么如何快速解决呢?本文就先给你一个后悔药,让你快速备份并恢复Linux系统。本文将以Ubuntu为例,在这之前,你需要一台服务器,你可以免费使用腾讯云开发者实验室进进行试验。

备份

当然,能够还原服务器上所做更改的最简单、最安全的方法是对重要文件执行常规例行备份。

Linux系统上有大量备份的软件。我们要研究备份工具之间的差异,找出最适合您需求的工具。更重要的是定期验证您的备份,以确保它们正常执行。

备份提供了一种非常好的方法来恢复服务器的损坏。只要复制的重要数据保存在其他服务器,它们就可以在数据损坏或删除时发挥效用。

备份包括完全备份(完全备份所有数据),差异备份(备份自上次全备份以来已更改的每个文件)和增量备份(备份自上次完全备份或差异备份以来文件中的数据更改)。

这些级别的组合通常彼此联合使用以完全备份文件,通常,您可以恢复单个文件,而无需还原整个文件系统。如果您不小心删除或修改了文件,可以用备份快速恢复。

版本控制

与备份有些类似的策略是版本控制。虽然不是备份整台计算机的理想解决方案,但如果您只想将文件恢复到以前的状态,则版本控制可能正是您所需要的。

版本控制系统,如gitmercurial,允许您跟踪文件的更改。这意味着,如果您将配置目录/etc放在版本控制下,则可以轻松地在由于更改而导致文件损坏的情况下还原更改。

简而言之,您可以使用以下命令在Ubuntu上安装git:

sudo apt-get update
sudo apt-get install git

安装完成后,您需要输入以下内容来设置一些配置选项:

git config --global user.name "your_name"
git config --global user.email "your_email"

完成此操作后,切换到要跟踪更改的目录。我们将使用此示例中的目录。另一个置于版本控制之下的好地方是您的主目录。我们可以通过输入以下内容来初始化git存储库:/etc

cd /etc
sudo git init

然后,您可以通过输入以下内容添加此目录(和子目录)中的所有文件:

sudo git add .

通过输入以下内容来提交更改:

git commit -m "Initial commit"

您的文件现在将受版本控制。当您对此目录中的文件进行更改时,您将需要重新运行最后两个命令(使用不同的内容而不是“Initial commit”)。

然后,您可以通过日志查找哈希值将文件还原到以前的状态:

git log
commit 7aca1cf3b5b19c6d37b4ddc6860945e8c644cd4f
Author: root 
Date:   Thu Jan 23 13:28:25 2014 -0500

    again

commit 4be26a199fd9691dc567412a470d446507885966
Author: root 
Date:   Thu Jan 23 13:20:38 2014 -0500

    initial commit

然后通过下面的命令恢复文件,例如:

git checkout commit_hash -- file_to_revert

请记住,只有在准备好进行修改时才能定期提交git。

使用程序包管理器还原更改

有时,您可以使用apt包管理器进行一些更改。程序包管理器可以帮助您将程序包还原为默认设置。我们将在下面讨论这些情况。

使用Apt卸载软件包

有时,您安装一个软件包却发现它不是您想要保留的东西。您可以通过输入以下内容来删除apt中的包:

sudo apt-get remove package

但是,上面的命令将使配置文件保持不变。但如果您尝试从系统中完全删除软件包,则可以使用purge命令,如下所示:

sudo apt-get purge package

您可以使用autoremove apt命令卸载任何不再需要的自动安装的依赖项:

sudo apt-get autoremove --purge

使用apt安装软件包时发生的另一个问题是“元软件包”很难正确删除。

元包是简单的依赖列表的包。它们本身并没有安装任何东西,而是一个其他包的列表。很难以自动方式完全删除。

一个可以提供帮助的工具就是deborphan包:

sudo apt-get install deborphan

删除元数据包后,可以运行orphaner命令查找软件包卸载所留下的孤立信息。这将帮助您找到未通过常规方法删除的包。

查找杂散文件的另一种方法是通过mlocate包。安装:

sudo apt-get install mlocate

之后,您可以通过以下命令来更新文件索引:

sudo updatedb

然后,您可以搜索包名称,以查看引用该包的文件系统(apt索引之外)是否有其他位置。

locate package_name

您还可以通过检查apt日志来查看元数据包安装的文件:

sudo nano /var/lob/apt/history.log
恢复默认文件

有时,在配置期间,您需要更改配置文件,并希望恢复默认文件。

如果要将当前配置文件保留为备份,可以通过输入以下内容将其复制:

sudo mv file file.bak

如果您没有对相关目录的写入权限,则必须使用上述命令中的sudo。

删除文件或将其移开后,您可以重新安装软件包并检查是否缺少任何配置文件:

sudo apt-get -o Dpkg::Options="--force-confmiss" install --reinstall package_name

如果您不知道哪个软件包负责需要还原的配置文件,则可以使用dpkg程序:

dpkg -S file_name

如果您只想执行某些安装期间发生的初始程序包配置步骤以更改某些值,则可以使用下面的命令:

dpkg-reconfigure package_name

这将重新启动最初安装程序时的配置。

查找文件的默认权限

修改文件权限时会发生另一种常见情况。有时,您为了测试目的而更改文件的权限但是事后想要恢复其权限。

通过查找哪个包拥有文件,可以找出您的发行版打包文件的默认权限。您可以通过发出以下命令来执行此操作:

dpkg -S filename

这将告诉您与该文件关联的包。例如,如果我们想要找出/etc/deluser.conf文件的包所有者,我们可以输入:

dpkg -S /etc/deluser.conf
adduser: /etc/deluser.conf

如您所见,它告诉我们adduser包负责该文件。然后,我们可以通过更改为apt存档来检查该包的.deb文件:

cd /var/cache/apt/archive

在此目录中,您将找到系统上安装的软件包的.deb文件。如果找不到与您正在使用的包的匹配的文件,则需要使用以下命令从存储库重新下载它:

sudo apt-get download package

如果我们的adduser包没有.deb,我们可以通过输入以下内容获取一个:

sudo apt-get download adduser

一旦文件出现在该目录中,我们可以通过输入以下内容来查询它安装的文件的默认属性:

dpkg -c file.deb

对于adduser程序,可能看起来如下:

dpkg -c adduser_3.113ubuntu2_all.deb
drwxr-xr-x root/root         0 2011-10-19 18:01 ./
drwxr-xr-x root/root         0 2011-10-19 18:01 ./etc/
-rw-r--r-- root/root       604 2011-10-19 18:01 ./etc/deluser.conf
drwxr-xr-x root/root         0 2011-10-19 18:01 ./usr/
drwxr-xr-x root/root         0 2011-10-19 18:01 ./usr/sbin/
-rwxr-xr-x root/root     35120 2011-10-19 18:01 ./usr/sbin/adduser
-rwxr-xr-x root/root     16511 2011-10-19 18:01 ./usr/sbin/deluser
. . .

如您所见,我们可以验证默认包是否为root设置读/写访问权限,以及为所有其他用户设置读访问权限。

结论

现在你应该有一些策略来扭转你所犯的错误,并提出规划相关的应急计划。上面提到的五种方案都需要提前备份。

您可以购买一台新的服务器进行尝试,不过我还是建议您用你免费使用腾讯云开发者实验室进进行试验。

参考文献:《How To Use Backups, Git, and Apt-Get to Undo Changes on a Linux VPS》

问答

linux实时调度算法?

相关阅读

5 种 Docker 日志最佳实践

你的nginx访问过慢?增加个模块吧!

MySQL 8.0 版本功能变更介绍

此文已由作者授权腾讯云+社区发布,原文链接:https://cloud.tencent.com/dev...

欢迎大家前往腾讯云+社区或关注云加社区微信公众号(QcloudCommunity),第一时间获取更多海量技术实践干货哦~

海量技术实践经验,尽在云加社区!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/62980.html

相关文章

  • 两年了,我写了这些干货!

    摘要:开公众号差不多两年了,有不少原创教程,当原创越来越多时,大家搜索起来就很不方便,因此做了一个索引帮助大家快速找到需要的文章系列处理登录请求前后端分离一使用完美处理权限问题前后端分离二使用完美处理权限问题前后端分离三中密码加盐与中异常统一处理 开公众号差不多两年了,有不少原创教程,当原创越来越多时,大家搜索起来就很不方便,因此做了一个索引帮助大家快速找到需要的文章! Spring Boo...

    宋华 评论0 收藏0
  • 两年了,我写了这些干货!

    摘要:开公众号差不多两年了,有不少原创教程,当原创越来越多时,大家搜索起来就很不方便,因此做了一个索引帮助大家快速找到需要的文章系列处理登录请求前后端分离一使用完美处理权限问题前后端分离二使用完美处理权限问题前后端分离三中密码加盐与中异常统一处理 开公众号差不多两年了,有不少原创教程,当原创越来越多时,大家搜索起来就很不方便,因此做了一个索引帮助大家快速找到需要的文章! Spring Boo...

    huayeluoliuhen 评论0 收藏0
  • 孔明说天有不测风云,我说无灾备不上云

    摘要:题记三国时赤壁鏖战,孔明说,天有不测风云,欲破曹公,宜用火攻,万事俱备,只欠东风。现在公共云混战,我想说,无灾备不上云,保护数据,未雨绸缪,带了雨伞,还需雨衣。题记:三国时赤壁鏖战,孔明说,天有不测风云,欲破曹公,宜用火攻,万事俱备,只欠东风。现在公共云混战,我想说,无灾备不上云,保护数据,未雨绸缪,带了雨伞,还需雨衣。未雨绸缪,到底是带雨伞还是雨衣呢?时代在变,人的追求也在变。随着公共云对...

    stormgens 评论0 收藏0
  • MySQL根据离线binlog快速“闪回”

    摘要:想到的闪回方案。但是即使数据库也只支持短时间内的闪回。如果只是恢复部分表数据非完全闪回,做不到关联表的正确恢复。比如需要恢复数据,但无法恢复业务里因为引起其它表更新的数据,除非完全闪回。 昨天突然有个客户说误操作,自己删除了大量数据,CTO直接将我拉到一个讨论组里,说要帮他们恢复数据。他们自己挖的坑,打算让开发那边根据业务日志去恢复,被告知只记录的删除主键这样的信息,物理删除,无能为力...

    isLishude 评论0 收藏0
  • 一个脚本教你快速去除桌面图标烦人的小箭头

    摘要:于是乎,冰河写了一个脚本完美去除了桌面图标烦人的小箭头。今天,给大家分享一个如何完美去除桌面快捷图标小箭头的技巧,希望能够给大家带来帮助。这种方法不会导致任何问题可放心使用,冰河已经亲自测试过了。 ...

    Jaden 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<