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

2021-09-07 19:17:09 字數 4864 閱讀 3359

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

當然,能夠還原伺服器上所做更改的最簡單、最安全的方法是對重要檔案執行常規例行備份。

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中的包:

sudo apt-get remove package
但是,上面的命令將使配置檔案保持不變。但如果您嘗試從系統中完全刪除軟體包,則可以使用purge命令,如下所示:

sudo apt-get purge package
您可以使用autoremove apt命令解除安裝任何不再需要的自動安裝的依賴項:

sudo apt-get autoremove --purge
使用apt安裝軟體包時發生的另乙個問題是「元軟體包」很難正確刪除。

元包是簡單的依賴列表的包。它們本身並沒有安裝任何東西,而是乙個其他包的列表。很難以自動方式完全刪除。

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
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設定讀/寫訪問許可權,以及為所有其他使用者設定讀訪問許可權。

現在你應該有一些策略來扭轉你所犯的錯誤,並提出規劃相關的應急計畫。上面提到的五種方案都需要提前備份。

linux實時排程演算法?

5 種 docker 日誌最佳實踐

你的nginx訪問過慢?增加個模組吧!

mysql 8.0 版本功能變更介紹

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

git常見後悔藥

撤銷本地全部沒有git add過的修改 git checkout 使用庫上檔案覆蓋本地修改 當然是指用本地庫覆蓋 git checkout file name 回退掉某一次commit,回退方式是自動生成乙個反向的commit,不會影響其他commmitgit revert commitid 將gi...

git reflog 後悔藥操作

穿梭前,用git log可以檢視提交歷史,以便確定要回退到哪個版本。git log commit e475afc93c209a690c39c13a46716e8fa000c366 head master author michael liao date fri may 1821 03 362018 ...

git上的後悔藥

修改上一次提交的文案 git commit amend 複製 我第一次提交時執行了命令 git add git commit m add some thing 但是commit後悔了,需要做一些修改再提交 再次提交的時候執行 git commit amend 這時候log日誌只顯示一條資訊 撤銷操作...