零基础程序员入门Linux系统 !如何快速恢复系统?
新手在学习Linux系统的时候,难免会遇到命令输错,或系统出错的难题。那么如何快速解决呢?本文就先给你一个后悔药,让你快速备份并恢复Linux系统。本文将以Ubuntu为例,在这之前,你需要一台服务器,你可以免费使用腾讯云开发者实验室进行试验。下面就一起来看这篇操作教程,零基础程序员入门Linux系统 !如何快速恢复你的系统?
备份
当然,能够还原服务器上所做更改的最简单、最安全的方法是对重要文件执行常规例行备份。
Linux系统上有大量备份的软件。我们要研究备份工具之间的差异,找出最适合您需求的工具。更重要的是定期验证您的备份,以确保它们正常执行。
备份提供了一种非常好的方法来恢复服务器的损坏。只要复制的重要数据保存在其他服务器,它们就可以在数据损坏或删除时发挥效用。
备份包括完全备份(完全备份所有数据),差异备份(备份自上次全备份以来已更改的每个文件)和增量备份(备份自上次完全备份或差异备份以来文件中的数据更改)。
这些级别的组合通常彼此联合使用以完全备份文件,通常,您可以恢复单个文件,而无需还原整个文件系统。如果您不小心删除或修改了文件,可以用备份快速恢复。
版本控制
与备份有些类似的策略是版本控制。虽然不是备份整台计算机的理想解决方案,但如果您只想将文件恢复到以前的状态,则版本控制可能正是您所需要的。
版本控制系统,如git和mercurial,允许您跟踪文件的更改。这意味着,如果您将配置目录/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 commithash -- fileto_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 adduser3.113ubuntu2all.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设置读/写访问权限,以及为所有其他用户设置读访问权限。
结论
现在你应该有一些策略来扭转你所犯的错误,并提出规划相关的应急计划。上面提到的五种方案都需要提前备份。
零基础程序员入门Linux系统 !如何快速恢复系统?的更多相关文章
- 程序员藏经阁 Linux兵书
程序员藏经阁 Linux兵书 刘丽霞 杨宇 编 ISBN 978-7-121-21992-4 2014年1月出版 定价:79.00元 536页 16开 内容提要 <Linux兵书>由浅 ...
- 调皮的程序员:Linux之父雕刻在Linux内核中的故事
本文内容由公众号“格友”原创分享. 1.引言 (不羁的大神,连竖中指都这么帅) 因为LINUX操作系统的流行,Linus 已经成为地球人都知道的名人.虽然大家可能都听过钱钟书先生的名言:“假如你吃 ...
- .Net程序员学习Linux(一)
本次知识点:Linux系统的多终端切换,linux下的用户,linux远程访问工具使用,linux下重要的目录,命令的组成,通配符,linux的路径问题,文件操作的综合运用 为什么学习linux? 1 ...
- Net程序员学习Linux
Net程序员学习Linux 本次知识点:Linux系统的多终端切换,linux下的用户,linux远程访问工具使用,linux下重要的目录,命令的组成,通配符,linux的路径问题,文件操作的综合运用 ...
- java程序员入门:英语好不好对编程到底有没有影响
我想当码农,听说钱钱拿的多! 哦.是很有钱!么样? 可是我不会! 那你想么样?去学撒! 可是,我英语差-- 有多差??? 很差-- 那????? 关于英语水平对编程的影响,我们一起来看看啦!希望可以解 ...
- Efficient&Elegant:Java程序员入门Cpp
最近项目急需C++ 的知识结构,虽说我有过快速学习很多新语言的经验,但对于C++ 老特工我还需保持敬畏(内容太多),本文会从一个Java程序员的角度,制定高效学习路线快速入门C++ . Java是为了 ...
- .Net程序员学习Linux最简单的方法
有很多关于Linux的书籍,博客.大多数都会比较“粗暴“的将一大堆的命令塞给读者,从而使很多.NET程序员望而却步.未入其门就路过了. 所以我设想用一种更为平滑的学习方式, 就是在学习命令时,先用纯语 ...
- 转:.Net程序员学习Linux最简单的方法
有很多关于Linux的书籍,博客.大多数都会比较“粗暴“的将一大堆的命令塞给读者,从而使很多.NET程序员望而却步.未入其门就路过了. 所以我设想用一种更为平滑的学习方式, 就是在学习命令时,先用纯语 ...
- 新年Flag,零基础程序媛编程学习计划(持续更新ing)~~
新的一年立下了转行做程序媛的Flag,我是文科妹子,专业是做市场传销…哦不,是市场营销,算是零基础转行,目标是半年内完成自学进入公司工作,目前打算从事的方向短期目标以入行为主,以前端(可以发挥自身审美 ...
随机推荐
- 机器学习-liuyubobobo(慕课网)
第一章 python3玩转机器学习 第二章 机器学习基础 安装:1.anaconda 2.pycharm 第三章 Jupyter Notebook,numpy,Matplotlib 1.jupyt ...
- Vue+Axios+Nigix+SpringCloud前端和后端搭建及其碰到的问题
一.Axios.Router的安装和使用 1.如何安装Axios和Router 1).进入到工程所在的文件夹,通过cmd指令,进入到window的dos界面 2).输入:npm install axi ...
- 整合 nginx php-fpm
start 继上一篇 整合两个images 完成 LNMP github https://github.com/shiphp/nginx-env 稍加修改 vim dockerfile ...
- springBoot (适合ssm)
很多小白在学ssm的时候,选用idea,网上应该有很多教程,创建maven项目,创建spring项目的都有,五花八门. 最近接触了springBoot,这个项目类型适用于ssm,还不用去创建很多文件夹 ...
- 关于如何实现一个Saga分布式事务框架的思考
关于Saga模式的介绍,已经有一篇文章介绍的很清楚了,链接在这里:分布式事务:Saga模式. 关于TCC模式的介绍,也已经有一篇文章介绍的很清楚了,链接在这里:关于如何实现一个TCC分布式事务框架的一 ...
- maven的概念模型及maven坐标
1.概念模型 项目对象模型:一个maven工程有一个pom.xml文件,通过pom.xml文件定义项目的坐标.项目依赖.项目信息.插件目标等. 依赖管理系统:通过maven的依赖管理对项目所依赖的j ...
- python基础(变量,字符串,列表,元组)
#列表的操作list1 = ['wuqiang','lichang','changhao'] #列表的定义print(list1) #操作列表print(list1[-1]) #操作列表的最后一位li ...
- 13.swoole学习笔记--DNS查询
<?php //执行DNS查询 swoole_async_dns_lookup("www.baidu.com",function($host,$ip){ echo $ip; ...
- 096-PHP循环使用next取数组元素
<?php function return_item($arr,$num=0){ //定义函数 for($i=0;$i<$num;$i++){ //循环向前移动数组指针 next($arr ...
- springmvc无法访问JS,CSS等文件
配置好web.xml中的dispatchservlet后,js,css,都不能正常显示 web.xml配置文件 <!-- 核心控制器 --> <servlet> <ser ...