(點選上方公眾號,可快速關註)
來源: lujun9972,
lujun9972.github.io/blog/2018/03/08/使用partclone備份磁碟分割槽/
在linux中,最常用的 block level 備份工具應該非 dd 莫屬了。 然而用 dd 做磁碟備份有一個不好的地方就是太費空間,磁碟多大,生成的備份檔案就有多大。
partclone 跟 dd 類似,也是一款 block level 的備份工具,因此使用它你無需擔心會破壞磁碟中 acls 或 selinux labels 這一類特殊的檔案許可權。
但是跟 dd 相比, partclone 能夠識別大多數常見的檔案型別,只備份磁碟中用到的那些block,從而大大減少備份所耗的空間。
目前 partclone 支援的檔案系統格式包括ext2, ext3, ext4, hfs+, reiserfs, xfs, jfs, ntfs, fat(12/16/32), exfat。
對每種檔案系統 partclone 都提供了對應的 partclone.
安裝partclone
archlinux上可以直接使用pacman來安裝:
sudo pacman -S partclone –noconfirm
備份磁碟分割槽
在備份磁碟分割槽之前,請先確保被備份的分割槽需要先解除安裝。不過如果你是用的 lvm ,那麼可以建立一個邏輯捲的 live snapshot,因此可以不受此限制。
下麵這個例子,我把安裝好的orangepilite做個備份。
將orangepilite斷電後,推出TF卡,然後插入讀卡器中,插入電腦的USB介面。然後執行
sudo partclone.ext4 -c -s /dev/sdb1 -o /mnt/orangepilite.pcl
其中:
-c
表示clone一個備份
-s
指定clone的源
-o
指定儲存的映象檔案
你會發現,雖然TF卡是8G,但是產生的orangepilite.pcl只有1.3G
[lujun9972@T520 lujun9972]$ ls -lh /mnt/orangepilite.pcl
-rw——- 1 root root 1.3G 3月 8 21:23 /mnt/orangepilite.pcl
不過更多的時候,我們會對映象檔案壓縮儲存,我們可以讓 partclone 與 gzip 連用實現這一點
sudo bash -c “partclone.ext4 -c -s /dev/sdb1 |gzip -c -9 >/mnt/orangepilite.pcl.gz”
最後產生的備份檔案只有454M
[lujun9972@T520 lujun9972]$ ls -lh /mnt/orangepilite.pcl.gz
-rw-r–r– 1 root root 454M 3月 8 21:34 /mnt/orangepilite.pcl.gz
相比之下,用 dd 備份後壓縮的大小為5.4G!
[lujun9972@T520 mnt]$ sudo bash -c “dd if=/dev/sdb1 | gzip -c -9 >/mnt/orangepilite.dd.gz”
記錄了15205152+0 的讀入
記錄了15205152+0 的寫出
7785037824 bytes (7.8 GB, 7.3 GiB) copied, 601.261 s, 12.9 MB/s
[lujun9972@T520 mnt]$ ls -l /mnt/orangepilite.dd.gz
-rw-r–r– 1 root root 5791589654 3月 8 21:49 /mnt/orangepilite.dd.gz
[lujun9972@T520 mnt]$ ls -lh /mnt/orangepilite.dd.gz
-rw-r–r– 1 root root 5.4G 3月 8 21:49 /mnt/orangepilite.dd.gz
從備份還原
從備份還原很簡單
sudo partclone.ext4 -r -s /mnt/orangepilite.pcl -o /dev/sdb1
這裡 -r 表示還原(restore),然後把上面備份的 -s 和 -o 引數值反過來就是了。
若備份的是壓縮過的檔案,則只需要執行
sudo bash -c “gzip -c -d /mnt/orangepilite.pcl.gz | partclone.ext4 -r -o /dev/sdb1”
看完本文有收穫?請轉發分享給更多人
關註「ImportNew」,提升Java技能