Linux也有後悔藥,五種方案快速恢復你的系統

歡迎你們前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~linux

本文由信姜緣 發表於雲+社區專欄nginx

新手在學習Linux系統的時候,不免會遇到命令輸錯,或系統出錯的難題。那麼如何快速解決呢?本文就先給你一個後悔藥,讓你快速備份並恢復Linux系統。本文將以Ubuntu爲例,在這以前,你須要一臺服務器,你能夠無償使用騰訊雲開發者實驗室進進行試驗。git

備份

固然,可以還原服務器上所作更改的最簡單、最安全的方法是對重要文件執行常規例行備份。算法

Linux系統上有大量備份的軟件。咱們要研究備份工具之間的差別,找出最適合您需求的工具。更重要的是按期驗證您的備份,以確保它們正常執行。ubuntu

備份提供了一種很是好的方法來恢復服務器的損壞。只要複製的重要數據保存在其餘服務器,它們就能夠在數據損壞或刪除時發揮效用。安全

備份包括徹底備份(徹底備份全部數據),差別備份(備份自上次全備份以來已更改的每一個文件)和增量備份(備份自上次徹底備份或差別備份以來文件中的數據更改)。服務器

這些級別的組合一般彼此聯合使用以徹底備份文件,一般,您能夠恢復單個文件,而無需還原整個文件系統。若是您不當心刪除或修改了文件,能夠用備份快速恢復。微信

版本控制

與備份有些相似的策略是版本控制。雖然不是備份整臺計算機的理想解決方案,但若是您只想將文件恢復到之前的狀態,則版本控制可能正是您所須要的。工具

版本控制系統,如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/developer/article/1159250?fromSource=waitui

歡迎你們前往騰訊雲+社區或關注雲加社區微信公衆號(QcloudCommunity),第一時間獲取更多海量技術實踐乾貨哦~

海量技術實踐經驗,盡在雲加社區

相關文章
相關標籤/搜索