2015-05-27

Ubuntu 備份與還原 LXC Container

阿舍用來測試的那個虛擬機器的硬碟快滿了,所以,阿舍就想把裡面一些暫時沒用到的 Container 給清一清,不過,有些 Container 阿舍還是會用到,因此,就需要把它備下來,但是,阿舍沒找到什麼專門的工具是用來備份 Container 的,然後,阿舍之前在找搬移 Container 的方法的時候,就有看到有人說,用 tar 來備份就可以了,阿舍試了一下,果然可行,所以,這篇寫的,主要是利用 tar 指令來備份和還原的哩 !


用 tar 來備份和還原 Container 的時候,要注意的事項就只有一個,那就是為了保持 Container 內的檔案系統的權限,因此,在壓縮和解壓縮 Container 的檔案時,都需要用到 --numeric-owner 這個選項,不然,不加這個選項的話,解壓縮後的檔案可能會讓 Container 運作的不太正常哩 !


  • 備份

以下就是阿舍備份 Container 的操作步驟, 是以阿舍的 Container 名稱是 ayusite 為例。

1. 關閉 Container
執行壓縮前最好是先用下面的指令先把要備份的 Container 給關閉。

$ sudo lxc-stop -n ayusite

2. 壓縮
執行上一面的指令關閉 Container 後,可以用下面第一行的指令來檢視 Container 的狀態,確定關機後,再用下面第二行指令來執行壓縮,原則上來說,要被壓縮的路徑就是 /var/lib/lxc/[Container名稱],以阿舍的 ayusite 為例,就是 /var/lib/lxc/ayubizsite。

$ sudo lxc-ls -f

$ tar --numeric-owner -czvf ayusite.tar.gz /var/lib/lxc/ayusite

3. 搬檔
壓縮要花一點時間,壓縮完成後,就可以把產生出來的 tar.gz 檔案給收藏起來,下次要用時,再找出來囉 !

4. 刪除 Container
如果你和阿舍一樣,目的是要節省空間的話,就可以用下面的指令來把 Container 給移除。

$ sudo lxc-destroy -n ayusite



  • 還原 

後來,阿舍要把前面打包的那個名叫 ayussite 的 Container 給放到阿舍的 VPS 上來執行,所以,阿舍就需要在 VPS 上「還原」,以下就是阿舍還原的操作步驟哩 !

1. 建立同名 Container
阿舍在 VPS 上已經有安裝過 LXC 套件了,所以,可以直接用下面的指令來建立相同名稱 Container,阿舍使用相同名稱是為了不想再去改設定,將 Container 取相同名稱,就只要把壓縮檔解開蓋上即可,不用去調設定檔哩 !

另外,建立 Container 的方式有二種,一種是用範本檔的方式,另一種是透過下載檔案的方式,為了避免差異,阿舍都會採用 Container 原來的建立方式來新建這個 Container,以這個 ayusite 的 Container 為例,阿舍是用下載的方式建立的,所以,這裡也採用相同的方式建立同名的 Container 哩 !

$ sudo lxc-create -t download -n ayusite -- -d ubuntu -r trusty -a amd64

2. 上傳檔案
阿舍是用 scp 的方式來把壓縮檔給上傳到某一個使用者的家目錄來放,之後,再直接把它解壓縮到 /var/lib/lxc 資料夾哩 !

$ scp ayusite.tar.gz arthurtoday@xyz.com:~/

3. 解壓縮
解壓縮的時候和壓縮一樣,也是要使用 --numberic-owner 選項,然後,用 -C 選項指定解開的檔案放在 / (根目錄),這樣檔案才會直接蓋掉在新建的 Container 的檔案上哩 !

$ sudo tar --numeric-owner -zxvf ayusite.tar.gz -C /

4. 啟動 Container
上面的還原動作都完成後,用下面的指令來啟動後,這個 Container 裡跑的東西就會和你備份刪除的那一個 Container 相同哩 ! ...

要提醒的是,阿舍這個方法只有試過在一般建成的 Container 上,如果有用到 overlayfs 的方式的話,阿舍就不確定這種方式可不可了哩 ! ...

推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

沒有留言 :

張貼留言

歡迎留言提問和討論 .... 😁