當前位置:
首頁 > 知識 > 使用 partclone 備份磁碟分區

使用 partclone 備份磁碟分區

(點擊

上方公眾號

,可快速關注)




來源: 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.<fs> 對應。比如備份 ext4 文件系統則使用 parclone.ext4 進行備份。 對於不支持的文件系統, partclone 也提供了 partclone.dd 來備份。




安裝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技能


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 ImportNew 的精彩文章:

深入分析 ThreadLocal 內存泄漏問題
火速下載!《阿里巴巴Android開發手冊》重磅發布!

TAG:ImportNew |