如何在備份(/etc)中保留檔案所有權?

如何在備份(/etc)中保留檔案所有權?

我看到許多消息來源表明備份可能很有用/etc。例如,簡報「為朋友和家人支持 Debian 機器」。

對於任何重要的備份,我們還需要一個明確定義的復原過程(我們可以定期測試:-)。

如何恢復這些系統文件,來自包含所有權資訊的備份?給出一個有效的恢復過程的範例。說明所做的任何假設。您可以選擇您選擇的備份工具,例如taretckeeper


具有特定所有者的文件範例:

$ 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

若要恢復備份:

  1. 執行預設安裝(與原始預設安裝相同)。
  2. 安裝etckeeper必要的版本控制系統。
  3. /etc恢復(git clone和或等效)的備份git checkout。正如 sourcejedi 所指出的,您需要在安裝任何動態分配使用者或群組 ID 的軟體包之前執行此操作。
  4. 恢復已安裝軟體包的清單並安裝它們。 Etckeeper 不會追蹤這一點;在 Debian 及其衍生版本上,使用apt-clone,請參閱如何將已安裝的軟體包選擇從一個 Debian 系統複製到另一個 Debian 系統? (Debian 喘息))。
  5. 重啟。

請注意,如果硬體不完全相同或檔案系統已重新格式化(恢復備份時往往會發生這種情況),則有些功能可能無法正常運作。為了讓復原工作更加無縫,請確保您不在配置中的任何位置使用唯一的硬體識別碼(例如MAC 位址、磁碟序號)或隨機識別(例如使用檔案系統標籤,而不是檔案系統或分割區UUID) 。

答案2

這個答案是一些需要測試的問題的清單,在其他地方沒有看到它們提到。現在我可以很高興地忽略「備份」/etc 的提及,其中也沒有詳細說明如何恢復它。 我還沒有測試過這個清單是否完整

以下步驟還忽略了我在軟體包升級期間在 etckeeper 中看到的頻繁的版本敏感和其他更改,正如問題中沒有具體提到的那樣。至少可能有一些更簡單的系統,這不是問題,例如運行 OpenWrt 的路由器。

  1. 假設:此備份具體包括/etc.
  2. 假設:您也知道如何處理對檔案系統的任何引用,例如,可能已使用不同的 UUID 在/etc/fstab.
  3. 假設:目標系統不包含任何額外的與備份相比。例如,它是作業系統的全新安裝,您的初始使用者是使用相同的名稱(和 UID)建立的,並且在升級過程中沒有向作業系統添加任何其他服務。這在 Debian 穩定版本中可能是正確的,但對於滾動版本發行版來說肯定不可靠。
  4. 假設:安裝過程對於分配的 UID(套件安裝順序)是完全決定的,這不受存儲庫中任何新更新的影響。我相信通常的套件管理器是確定性的。同樣,Debian 穩定版可能是可靠的,而滾動發布版則不然,並且它們之間存在著一個不確​​定的領域。您也可以安排執行完全相同版本的安裝程序,而無需存取更新儲存庫(均在復原期間)當您安裝原始系統時)。
  5. 您應該已經安裝了備份還原工具:)。
  6. 以下步驟也假設 Linux 的傳統影子密碼檔。 BSD 系統使用不同的檔案名稱。一些特殊用途的Linux系統引進了風格明顯不同
  7. 確保您可以啟動進入某種“救援模式”,而無需使用 中定義的任何密碼/etc,並且您不需要任何更複雜的內容即可存取備份。我們這是在玩火。我不知道磁碟加密將如何處理這個問題,儘管使用與備份相同的密碼可能會有所幫助。請注意,如果從單獨的“救援”運行,以下步驟將不起作用系統」。
  8. mv /etc/ /etc.installer # can be removed later
  9. mkdir /etc && chmod 755 /etc
  10. ID_FILES=passwd group shadow
  11. for i in $ID_FILES; do cp /etc.installer/${i} /etc; done
  12. i現在,對於中的每個文件$ID_FILES,您可以/etc/${i}從備份還原到目標系統。
  13. 現在您可以恢復全部文件,包括其所有權資訊。
  14. 現在你可以重新套用 SELinux 標籤或同等內容(如有需要)。

如果備份是 etckeeper 儲存庫(並且沒有其他檔案),則第 12 步是將其複製/複製到/etc,然後執行etckeeper init.您可以跳過步驟 10-12。

開放式WRT

OpenWrt 路由器支援系統配置備份/恢復,並在 Web 介面中提供特定功能。

在我的 OpenWrt 15.05.1 系統上,我看到唯一擁有文件/etc(或其他任何地方)的使用者是rootnobody。可以安全地假設 OpenWrt 的全新安裝已經包含這些使用者。

我不知道添加了額外用戶的 OpenWrt 設定是否可以透過此工具正確處理。

相關內容