我看到許多消息來源表明備份可能很有用/etc
。例如,簡報「為朋友和家人支持 Debian 機器」。
對於任何重要的備份,我們還需要一個明確定義的復原過程(我們可以定期測試:-)。
如何恢復這些系統文件,來自包含所有權資訊的備份?給出一個有效的恢復過程的範例。說明所做的任何假設。您可以選擇您選擇的備份工具,例如tar
或etckeeper
。
具有特定所有者的文件範例:
$ ls -l|grep -v "root root"
total 2240
-rw-r-----. 1 root brlapi 33 Nov 15 21:32 brlapi.key
-rw-r-----. 1 root chrony 481 Nov 21 11:03 chrony.keys
drwxr-xr-x. 4 root lp 4096 Apr 18 10:58 cups
-rw-------. 1 tss tss 7046 Feb 5 2016 tcsd.conf
答案1
我的方法是安裝等等管理員。它很好地整合在 Debian 及其衍生版本中。 Etckeeper 負責記住權限(但不記住 SELinux 標籤)。然後,備份就簡化為備份版本控制儲存庫(例如,來自)/etc
的眾所周知的問題。git pull
/etc
若要恢復備份:
- 執行預設安裝(與原始預設安裝相同)。
- 安裝
etckeeper
必要的版本控制系統。 /etc
恢復(git clone
和或等效)的備份git checkout
。正如 sourcejedi 所指出的,您需要在安裝任何動態分配使用者或群組 ID 的軟體包之前執行此操作。- 恢復已安裝軟體包的清單並安裝它們。 Etckeeper 不會追蹤這一點;在 Debian 及其衍生版本上,使用
apt-clone
,請參閱如何將已安裝的軟體包選擇從一個 Debian 系統複製到另一個 Debian 系統? (Debian 喘息))。 - 重啟。
請注意,如果硬體不完全相同或檔案系統已重新格式化(恢復備份時往往會發生這種情況),則有些功能可能無法正常運作。為了讓復原工作更加無縫,請確保您不在配置中的任何位置使用唯一的硬體識別碼(例如MAC 位址、磁碟序號)或隨機識別(例如使用檔案系統標籤,而不是檔案系統或分割區UUID) 。
答案2
這個答案是一些需要測試的問題的清單,在其他地方沒有看到它們提到。現在我可以很高興地忽略「備份」/etc 的提及,其中也沒有詳細說明如何恢復它。 我還沒有測試過這個清單是否完整。
以下步驟還忽略了我在軟體包升級期間在 etckeeper 中看到的頻繁的版本敏感和其他更改,正如問題中沒有具體提到的那樣。至少可能有一些更簡單的系統,這不是問題,例如運行 OpenWrt 的路由器。
- 假設:此備份具體包括
/etc
. - 假設:您也知道如何處理對檔案系統的任何引用,例如,可能已使用不同的 UUID 在
/etc/fstab
. - 假設:目標系統不包含任何額外的與備份相比。例如,它是作業系統的全新安裝,您的初始使用者是使用相同的名稱(和 UID)建立的,並且在升級過程中沒有向作業系統添加任何其他服務。這在 Debian 穩定版本中可能是正確的,但對於滾動版本發行版來說肯定不可靠。
- 假設:安裝過程對於分配的 UID(套件安裝順序)是完全決定的,和這不受存儲庫中任何新更新的影響。我相信通常的套件管理器是確定性的。同樣,Debian 穩定版可能是可靠的,而滾動發布版則不然,並且它們之間存在著一個不確定的領域。您也可以安排執行完全相同版本的安裝程序,而無需存取更新儲存庫(均在復原期間)和當您安裝原始系統時)。
- 您應該已經安裝了備份還原工具:)。
- 以下步驟也假設 Linux 的傳統影子密碼檔。 BSD 系統使用不同的檔案名稱。一些特殊用途的Linux系統引進了風格明顯不同。
- 確保您可以啟動進入某種“救援模式”,而無需使用 中定義的任何密碼
/etc
,並且您不需要任何更複雜的內容即可存取備份。我們這是在玩火。我不知道磁碟加密將如何處理這個問題,儘管使用與備份相同的密碼可能會有所幫助。請注意,如果從單獨的“救援”運行,以下步驟將不起作用系統」。 mv /etc/ /etc.installer # can be removed later
mkdir /etc && chmod 755 /etc
ID_FILES=passwd group shadow
for i in $ID_FILES; do cp /etc.installer/${i} /etc; done
i
現在,對於中的每個文件$ID_FILES
,您可以/etc/${i}
從備份還原到目標系統。- 現在您可以恢復全部文件,包括其所有權資訊。
- 現在你可以重新套用 SELinux 標籤或同等內容(如有需要)。
如果備份是 etckeeper 儲存庫(並且沒有其他檔案),則第 12 步是將其複製/複製到/etc
,然後執行etckeeper init
.您可以跳過步驟 10-12。
開放式WRT
OpenWrt 路由器支援系統配置備份/恢復,並在 Web 介面中提供特定功能。
在我的 OpenWrt 15.05.1 系統上,我看到唯一擁有文件/etc
(或其他任何地方)的使用者是root
和nobody
。可以安全地假設 OpenWrt 的全新安裝已經包含這些使用者。
我不知道添加了額外用戶的 OpenWrt 設定是否可以透過此工具正確處理。