一個去年的老本,500G硬盤,空間各類捉急,準備遷移到公司的臺式機上,卻發現Linux上遷移環境沒有Windows下那麼方便,只能複製整塊硬盤了。linux
從公司拿了一塊1T的硬盤,插入移動硬盤盒(淘寶上搞的一個移動硬盤盒,40元),加電識別,格式化,開始硬盤複製。命令行
市面上針對數據備份的軟件不可勝數,咱們不討論他們的優缺點。可是若是你正在使用Linux(其實若是你沒有使用Linux,而是經過一些 Linux live CD來啓動計算機,我想也是同樣的),那麼恭喜你,你能夠簡單地使用系統命令「dd」來完成磁盤克隆,分區克隆或者磁盤或分區到磁盤鏡像的複製。通常狀況 下,這幾個任務已經能夠知足你平常工做的須要了。
先說明幾個概念,在Linux上,一塊硬盤或者一個分區都由一個目錄表示,通常存在於系統根目錄的/dev/之下。例如/dev/hda表明你的第一塊 IDE硬盤,/dev/sdb表明第二塊SCSI硬盤,/dev/fd0表明系統的軟盤驅動器等等。一樣每塊硬盤上的分區也有獨特的目錄名,例如/dev /hda1表示你第一塊硬盤上的第一個分區(至於這個分區上有什麼東西在進行備份操做的時候並不重要)。code
1. 磁盤克隆
也就是把整個硬盤複製一份。固然你首先須要在計算機上在接上一塊新硬盤,並讓系統識別。例如這塊硬盤可能被識別爲/dev/sdb,原有硬盤叫/dev/sda. 而後你能夠在linux命令行上簡單地執行:dd if=/dev/sda of=/dev/sdb
對就這麼簡單,此命令完成後,你的第二塊硬盤上將有一個和第一塊硬盤如出一轍的副本,也是能夠啓動的。由於dd操做就是簡單的按字節複製,什麼分區表啊,MBR啊通通照搬。
固然你也能夠作一些微調,來定製一下克隆操做。例如你可能但願把硬盤上的內容所有備份到一個磁盤文件中,而不是另外一塊新硬盤,你能夠dd if=/dev/sda of=~/disk1.img
以後,disk1.img就是備份好的磁盤映像文件,你能夠複製或轉移到其餘介質也能夠壓縮一下:gzip disk1.img #generates disk1.img.gz
或者在建立磁盤映像文件的同時就執行壓縮:dd if=/dev/sda | gzip > disk.img.gz
dd if=/dev/sda | bzip2 > disk.img.bz2
不錯吧!ghost的功能都有了。orm
2.分區克隆
若是咱們不想克隆整塊磁盤,只想把某些存放數據的分區備份一下,你會須要克隆一個分區。正如預備知識所述,分區在linux下也是一個文件。例如dd if=/dev/sda1 of=~/part1.img
將把第一塊磁盤的第一個分區備份到名爲part1.img的文件中。
也能夠進行分區複製:dd if=/dev/hda1 of=/dev/hda3
將把分區一原樣複製到分區3.ip
3. 從鏡像文件恢復磁盤或分區
很簡單,把上面命令中,of和if指向的文件名互換一下便可實現恢復。例如dd if=disk1.img of=/dev/sda
把保存在disk1.img中的映像恢復到第一塊磁盤dd if=part1.img of=/dev/hda2
把保存在part1.img中的映像恢復到第一塊硬盤的第二個分區軟件
最後,須要注意一點是,不管備份仍是恢復,都須要保證 of 指向的文件或磁盤空間要大於 if 指向的內容,由於是按字節複製 若是沒有足夠的空間去存儲內容,備份天然會失敗。淘寶