• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 通過網絡克隆你的電腦

    發表于:2007-05-26來源:作者:點擊數: 標簽:
    摘要: 當你需要從一臺電腦復制數據到另一臺電腦上去的時候,本文所講基于 網絡 的且 安全 、簡易、有效的方法就派上用場了。 提要: 盡管克隆動物(多莉羊)甚至人類胚胎的研究依然是一個充滿爭議和風險的領域,而掌握一些關于克隆電腦的知識不但沒有害(正確
    摘要:

    當你需要從一臺電腦復制數據到另一臺電腦上去的時候,本文所講基于網絡的且安全、簡易、有效的方法就派上用場了。

    提要:

    盡管克隆動物(“多莉羊“)甚至人類胚胎的研究依然是一個充滿爭議和風險的領域,而掌握一些關于“克隆”電腦的知識不但沒有害(正確的操作為前提),反而會使你仔細書寫配置腳本的能力得到提升。根據摩爾定律以及計算機生產的快速進程,我們在使用電腦時很可能會遇到需要“克隆”我們的電腦的情況——不管是臺式機被筆記本取代還是換一臺更快的機子。而我們就需要將電腦A 上的所有文件分區 復制到電腦B上而且使它正常工作。通常有兩種做法:一種就是直接打開機箱,然后將硬盤換掉就可以了——但是但打開機箱通常意味著失去質保,而且這通常很危險——一個沒有經驗的用戶可能會給硬件帶來機械的或者電子上的損傷。另一種方法要求兩臺電腦都有網卡(現在即使是在家用電腦中通常也滿足),這種在下面會詳細介紹的方法更安全。

    下面描述的所有方法都是建立在網絡連接的基礎上,即,需要在“源”電腦(就是那臺有數據要被復制的電腦)和“目標”電腦(就是需要數據的那臺電腦)之間有網絡連接??梢灾苯油ㄟ^集線器連接,或者通過特殊連接線(crossovercable)將兩張網卡連接起來(注意:一般的網線是不行的)。對目標電腦來說,需要一張Live-CD(如Knoppix 或 LNX-BBC)或一個最小安裝,以保證可對網卡進行操作而且使ssh和/.netcat能用。甚至有的軟盤上的系統(就像我用tomsrtb也能很好工作),而且如果你想安裝另一個全新的發行版,這是一個很不錯的選擇。兩臺電腦的IP要在同一個網段,以便他們能相互進行“會話”,

    可能的方案:

    通過基本的準備,有幾種方法來進行復制:

    * 通過dd復制

    * tar/cpio管道

    * rsync

    * dump和restore

    如果你的兩塊硬盤不是同樣的型號和大小,第一種方法是不可行的或非常復雜的(復制iso 鏡像(dd if=/dev/cdrom of=the.iso)或者軟盤通過dd很不錯。這里 (diskcopy 腳本)是一個使用dd的腳本diskcopy)。使用dd的另一個缺點是:你未使用的空間也會被復制,從而浪費很多無謂的時間。通過tar和cpio的管道會花費很長的時間(長達數小時),而且對文件名和符號連接會有一些限制,在/dev時會被阻塞,等等。因此,不推薦此法。如果你的源電腦和目標電腦上的文件系統不一樣,那么rsync(1)可能是最好的選擇。這只需要有ssh正常的運行且文件傳輸協議正常。而且它還有針對設備文件的-D選項以及其他很多針對各種場合各種需求的選項。這是對每天的備份、作鏡像或其他任務來說很有用的一個工具,它的手冊上還有很多值得學習的例子。通過rsync復制的例子在[1]可以找到。

    這里,我們使用dump和restore,這樣還可以重新分配整個文件系統。這是一個快速、有效且可以通過最少的努力達到我們的目的——簡直是理想的解決方法。我需要操作這個過程兩次,因為有兩臺目標電腦。兩臺目標電腦都能很好的啟動、工作,而且復制那些成G的數據大概只花了我一個小時。這個方法要求源電腦和目標電腦有同樣的文件系統。在此,我們假定是ext2或ext3,因為這是現在最廣泛的使用的兩種文件系統()(參見下面).

    配置ssh

    一旦配置好最小安裝的系統或者Live-CD,下一步就是配置ssh(如果你沒有像下面描述的使用netcat來傳送文件)。這需要源電腦運行sshd(the secure shell daemon)。如果不確定,請檢查 /etc/init.d/。在目標電腦上輸入(root帳戶):

    ssh-keygen -t rsa

    為簡便起見,不要輸入密碼。公鑰就會保存在/root/.ssh/id_rsa.pub文件里。復制此文件到源電腦上

    scp /root/.ssh/id_rsa SourcePC:/tmp

    在此SourcePC是你源電腦的IP地址,當提示你是否確認時,輸入完整的“yes”(單獨的“y”有時會不行)。在源電腦上你還會被要求輸入root的密碼?,F在把目標電腦加入你源電腦的可信任網絡節點里去。

    cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys

    為檢查是否成功完成,重復上面的復制命令,應該不會再要求你輸入密碼了!在目標電腦上創建文件系統.

    通常第一步都是對你的硬盤分區,然后創建ext2/ext3文件系統。ext3的需要在mke2fs命令里加一個-j (journalling)的選項(需要內核對ext3的支持)。你甚至可以將ext2的分區轉化為 ext3的, 參見tune2fs(8)。假設我們的源電腦上有如下的分區:

    Filesystem Size Used Use% Mounted on

    /dev/hda3 2.7G 552M 22% /

    /dev/hda5 7.8G

    1.6G 22% /usr

    /dev/hda7 6.3G 1.7G 28% /usr/share

    /dev/hda8 3.4G 601M 19% /home

    /dev/hda12 5.3G 1.9G 37% /opt

    /dev/hda1 587M 70M 13%

    /var/backup

    我推薦大家一定要做一些分區,否則,文件系統的錯誤使用或者硬盤磁道的一點損壞就會完全破壞掉你所有的數據。而且根據Murphy定律,在事先沒有做好硬盤分區而是直接使用整塊硬盤的時候,這通常就會發生。我最近就遇到過這樣的情況,如果事先沒有做好分區的話,就會由于主分區的一點問題而丟失掉我的所有數據。上面的文件表明/usr分區增長的太大了,所以/usr/share必須被加入。是該換一個大點的硬盤的時候了。在目標電腦上,使用parted(推薦)或者你喜愛的分區工具(Qtparted 是一個很好的圖形界面的工具,據說是PartitionMagic克隆版)。創建的分區不能比源電腦上對應的分區小。另外,別忘了 swap 分區。保存好分區表,在剛創建的分區上創建文件系統,可以使用

    mke2fs -j -L /dev/xxx

    這里xxx是你的分區名,然后用設置卷標號。我經常使用如“/usr”一類的作為卷標。你也可以通過tune2fs(8)來設置各種任務,比如周期性的文件系統檢查。

    傳送文件系統

    首先你需要加載所有新創建的分區,我們先從主文件系統(“/”)開始,其他的按順序依次進行。當然可以將源電腦上的兩個分區整合到目標電腦上的一個分區上去,事實上,這正是我們要做的——將上例中/usr/ 和 /usr/share合并為一個分區。我們加載未來的主文件系統:

    mount /dev/xxx /mnt

    在復制的時候,轉到目標目錄里面去是很必要的

    cd /mnt

    在目標電腦上鍵入

    ssh targetPC 'dump -0 -f - /' | restore -r -f -

    這里targetPC是你目標電腦的IP地址。參數“-0”表示完全備份,“-f-”表示使用stdin/stdout做為文件描述符,而“-r”意思是指示restore去重新創建通過網絡傳送的文件系統到目標電腦上去。更多內容請參考dump(8) 和 restore(8)。下面你看到的是傳送主文件系統的輸出。

    $ ssh 10.42.3.42 'dump -0 -f - /' | restore -r -f -

    DUMP: Date of this level 0 dump: Tue Feb 22 15:50:12 2005

    DUMP: Dumping /dev/hda3 (/) to standard output

    DUMP: Label: debian

    DUMP: Writing 10 Kilobyte records

    DUMP: mapping (Pass I) [regular files]

    DUMP: mapping (Pass II) [directories]

    DUMP: estimated 547312 blocks.

    DUMP: Volume 1 started with block 1 at: Tue Feb 22 15:50:14 2005

    DUMP: dumping (Pass III) [directories]

    DUMP: dumping (Pass IV) [regular files]

    DUMP: Volume 1 completed at: Tue Feb 22 15:51:43 2005

    DUMP: Volume 1 546590 blocks (533.78MB)

    DUMP: Volume 1 took 0:01:29

    DUMP: Volume 1 transfer rate: 6141 kB/s

    DUMP: 546590 blocks (533.78MB)

    DUMP: finished in 89 seconds, throughput 6141 kBytes/sec

    DUMP: Date of this level 0 dump: Tue Feb 22 15:50:12 2005

    DUMP: Date this dump completed: Tue Feb 22 15:51:43 2005

    DUMP: Average transfer rate: 6141 kB/s

    DUMP: DUMP IS DONE

    Restore通常會創建一個名叫restoresymtable的文件,如果你確信在文件系統重建過程中沒有錯誤發生,你可以將這個文件刪掉。完成主文件系統的復制,下面我們依次完成其他子分區的復制。從/usr開始吧(假定你現在的工作目錄是未來的主文件系統)。

    mount /dev/xxx ./usr

    cd ./usr

    ssh targetPC 'dump -0 -f - /usr' | restore -r -f -

    這個mount-cd-dump/restore循環現在可以對你的所有目錄重復進行操作。上面提到的對/usr/share(在源電腦上是個獨立的分區)的處理,可以簡單的通過切換目錄到./usr/share(注意這個“.”),然后簡單的重復

    ssh targetPC 'dump -0 -f - /usr/share' | restore -r -f -

    在目標文件系統有你要restore的文件時,Restore會報錯。通過ssh復制一整臺電腦的數據會花費大概一個小時和100MB 網卡(也許還要特殊數據線crossover cable)。

    注意:轉儲文件系統時,并不需要加載,你可以僅僅通過給定分區名,如/dev/hda6,而非加載后的目錄名。

    另一個選擇netcat

    另一個種方法不使用ssh,而使用netcat(1),netcat簡稱nc.Netcat,是一把非常簡單易用的基于 TCP/IP協議(C/S模型的)的“瑞士軍刀”,它能允許我們通過網絡創建管道(pipe)。上面的例子只需像下面一樣改一點點東西就可以用了。我們假設加載在/var/backup上的分區是我們要通過dump/restore來傳送的。在接收端(目標電腦),創建一個netcat的監聽例程(-l),這個監聽例程將管道輸出到restore。

    nc -l -p 2000 -q 1 | restore -r -f -

    在源電腦,創建另一個netcat的例程,這個例程將它從管道里得到的輸入發給目標電腦,這里target-IP 是目標電腦的 IP 地址。

    dump -0 -f - /var/backup | nc 2000

    -q選項是讓nc在到達文件結束(EOF)時停止運行,但我是手動結束nc的。不過,仍然建議大家使用ssh 。

    后期工作

    恭喜你!到目前為止,你已經成功的復制了你的系統。剩下的問題就是讓它好好的工作起來。首先,就是更新你的 /etc/fstab 文件。如果你的目標電腦的IP地址變了,那么網絡配置文件(Debian 里面是/etc/hosts和/etc/network/interfaces 兩個文件)。然后就是非常重要的 啟動配置 文件,這個是無論如何都需要更新的。對lilo 來說, 就是需要修改 /etc/lilo.conf文件(特別是 root=... 選項) 然后運行 lilo -v)。 對 grub 來說, 編輯 /boot/grub/menu.lst(或 /boot/grub/grub.conf,取決于哪個是符號鏈接)然后運行 grub,

    grub> root (hd0,xxx)

    ... filesystem is ...

    grub> setup (hd0)

    ... lots of output here

    grub> quit

    或運行grub-install/dev/xxx其中xxx是你的硬盤。在此,檢查你的root(hdn,xx),并加上 root=/dev/xxx 的設置。

    可能的情況是,你現在復制好的電腦有了一些更好的硬件,因此可能需要修改你內核的配置。如果你的系統有很多預先配置的好的模塊(如RedHat,SuSe,Mandrake,Fedora...),那么很可能已經有了合適的模塊(module)了。否則, lspci -vv 并自己重新編譯內核。如果你的顯卡不同了,更新 /etc/X11/XF86Config-4(或者在 RH/Fedora 中xorg.conf )。如果可能,啟動到運行級別 3 并使用工具來配置你的 X。在 debian 里,一些調查是必要的,我就很幸運的發現我的驅動從r128 變為了radeon。

    其他系統

    這篇文章講解了克隆ext2/ext3文件系統的全過程。很多類似的命令可以在很多其他的*nix系統上,諸如 FreeBSD, HP-UX, IRIX 等也提供 dump/restore 這些命令; 在 Solaris 中,這被稱作 ufsdump/ufsrestore。當然也有的文件系統不提供dump功能,例如ReiserFS,這種情況就最好使用 rsync了。關于使用 rsync 成功復制Linux 系統的問題,參見 [1]。

    References

    [1] 'Replicating a Linux System - Yet Another Method.' Ben Okopnik, Linux Gazette Issue 83, October 2002.

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>