网络克隆:通过网络克隆你的电脑

来源:www.linuxfocus.org

摘要:

当你需要从台电脑复制数据到另台电脑上去时候本文所讲基于网络且安全、简易、有效思路方法就派上用场了

提要:

尽管克隆动物(“多莉羊“)甚至人类胚胎研究依然是个充满争议和风险领域而掌握些有关“克隆”电脑知识不但没有害(正确操作为前提)反而会使你仔细书写配置脚本能力得到提升根据摩尔定律以及计算机生产快速进程我们在使用电脑时很可能会遇到需要“克隆”我们电脑情况——不管是台式机被笔记本取代还是换台更快机子而我们就需要将电脑A 上所有文件分区 复制到电脑B上而且使它正常工作通常有两种做法:种就是直接打开机箱然后将硬盘换掉就可以了——但是但打开机箱通常意味着失去质保而且这通常很危险——个没有经验用户可能会给硬件带来机械或者电子上损伤种思路方法要求两台电脑都有网卡(现在即使是在家用电脑中通常也满足)这种在下面会详细介绍思路方法更安全

下面描述所有思路方法都是建立在网络连接基础上需要在“源”电脑(就是那台有数据要被复制电脑)和“目标”电脑(就是需要数据那台电脑)的间有网络连接可以直接通过集线器连接或者通过特殊连接线(crossovercable)将两张网卡连接起来(注意:网线是不行)对目标电脑来说需要张Live-CD(如Knoppix 或 LNX-BBC)或个最小安装以保证可对网卡进行操作而且使ssh和/或netcat能用甚至有软盘上系统(就像我用tomsrtb也能很好工作)而且如果你想安装另个全新发行版这是个很不错选择两台电脑IP要在同个网段以便他们能相互进行“会话”

可能方案:

通过基本准备有几种思路方法来进行复制:

* 通过dd复制

* tar/cpio管道

* rsync

* dump和restore

如果你两块硬盘不是同样型号和大小种思路方法是不可行或非常复杂(复制iso 镜像(dd =/dev/cdrom of=the.iso)或者软盘通过dd很不错这里 (diskcopy 脚本)是个使用dd脚本diskcopy)使用dd个缺点是:你未使用空间也会被复制从而浪费很多无谓时间通过tar和cpio管道会花费很长时间(长达数小时)而且对文件名和符号连接会有些限制在/dev时会被阻塞等等因此不推荐此法如果你源电脑和目标电脑上文件系统不那么rsync(1)可能是最好选择这只需要有ssh正常运行且文件传输协议正常而且它还有针对设备文件-D选项以及其他很多针对各种场合各种需求选项这是对每天备份、作镜像或其他任务来说很有用个工具手册上还有很多值得学习例子通过rsync复制例子在[1]可以找到

=myp111>这里我们使用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密码现在把目标电脑加入你源电脑可信任网络节点里去

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 _disibledevent=>传送文件系统

首先你需要加载所有新创建分区我们先从主文件系统(“/”)开始其他按顺序依次进行当然可以将源电脑上两个分区整合到目标电脑上个分区上去事实上这正是我们要做——将上例中/usr/ 和 /usr/share合并为个分区我们加载未来主文件系统:

mount /dev/xxx /mnt


=myp111>


在复制时候转到目标目录里面去是很必要

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 Kilo 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,而非加载后目录名


=myp111>个选择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/erfaces 两个文件)然后就是非常重要 启动配置 文件这个是无论如何都需要更新对lilo 来说, 就是需要修改 /etc/lilo.conf文件(特别是 root=... 选项) 然后运行 lilo -v) 对 grub 来说, 编辑 /boot/grub/menu.lst(或 /boot/grub/grub.conf取决于哪个是符号链接)然后运行 grub,

grub> root (hd0,xxx)

... filesystem is ...

grub> up (hd0)

... lots of output here

grub> quit

或运行grub-/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 - Yet Another Method.'' Ben Okopnik, Linux Gazette Issue 83, October 2002.


Tags:  ghost网络克隆 电脑克隆卡 网络克隆软件 网络克隆

延伸阅读

最新评论

发表评论