將解除安裝的設備備份到 tar 文件
雖然我的總體目標是在 Amazon Web Services (AWS) 上做點什麼,但我的具體問題與 AWS 無關。
背景
我的目標是使用Packer創建一個 Amazon 系統映像 (AMI),其中有幾個不同的路徑安裝到不同的文件系統以提高安全性。例如
/tmp
,應該使用該noexec
選項安裝到文件系統。我想創建一個用於製作 AMI 的自動化流程這一事實意味著我無法在實例本身中執行重新安裝命令,因此我改用 Packer amazon-chroot builder。這意味著我執行一個 EC2 實例,並從該 EC2 實例執行 Packer。然後,Packer 將掛載從與“源 AMI”一起使用的 EBS 快照中獲取的 EBS 卷。我現在需要對掛載的 EBS 卷執行一些操作。
我的問題
我的第一步是對安裝到
/mnt/ebs
.根據這部分https://youtu.be/8h_Y-L1Q8xI?t=13m47s的精彩介紹,演講者建議先解除安裝設備,然後使用
tar
.他在展示文稿的後面重複了這個操作順序。我的具體問題是:如果設備一開始沒有安裝,我該如何創建設備內容的 tar 備份?此外,首先解除安裝它是為了保證它處於一致狀態,在備份期間不會發生進一步的寫入,還是其他什麼?
順便說一句,我似乎無法在沒有該選項的情況下解除安裝設備,儘管使用or
umount -l
檢查繁忙的程序,但我會將這些細節留給另一個問題。fuser``lsof
請注意,我使用的是 Amazon Linux,它類似於 CentOS,但不使用 systemd。
不,無法使用 tar 備份未掛載的文件系統。
Tar 期望備份文件,但正如您所懷疑的,在解除安裝文件系統後,tar 無法使用這些文件。
請注意,主持人說:
…首先我們解除安裝Packer 剛剛為我們安裝的所有內容…
他沒有說明 Packer 掛載了什麼,但仔細查看了腳本的截圖:它不包括各種掛載點,例如 /proc 和 /dev。這意味著實際上已經安裝*了某些東西;*我假設它是一個假根,綁定了偽文件系統。
創建基於 tar 的備份的理想方法是以只讀方式掛載文件系統。目的是在備份過程中保持文件系統的完整性;您不希望在備份過程中進行更改。
似乎您可以拍攝有問題的 EBS 卷的快照,將其以只讀方式安裝在其他地方,然後從那裡創建您的 tar 存檔。