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


歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐干貨哦~

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

新手在學習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/developer/article/1159250?fromSource=waitui

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM