通过网络完全复制你的电脑

通过网络完全复制你的电脑

[Illustration]
 

提要

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

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

 

可能的方案

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

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

这里,我们使用 dumprestore,这样还可以重新分配整个文件系统。这是一个快速、有效且可以通过最少的努力达到我们的目的——简直是理想的解决方法。 我需要操作这个过程两次,因为有两台目标电脑。两台目标电脑都能很好的启动、工作,而且复制那些成G 的数据大概只花了我一个小时。这个方法要求源电脑和目标电脑有同样的文件系统。在此,我们假定是 ext2ext3,因为这是现在最广泛的使用的两种文件系统()(参见 下面).  

配置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)。 假设我们的源电脑上有如下的分区:

FilesystemSizeUsedUse%Mounted on
/dev/hda3 2.7G552M22%/
/dev/hda5 7.8G
1.6G22%/usr
/dev/hda7 6.3G1.7G28%/usr/share
/dev/hda8 3.4G601M19%/home
/dev/hda12 5.3G1.9G37% /opt
/dev/hda1 587M70M13%
/var/backup

我推荐大家一定要做一些分区,否则,文件系统的错误使用或者硬盘磁道的一点损坏就会完全破坏掉你所有的数据。而且根据Murphy 定律,在事先没有做好硬盘分区而是直接使用整块硬盘的时候,这通常就会发生。我最近就遇到过这样的情况,如果事先没有做好分区的话,就会由于主分区的一点问题而丢失掉我的所有数据。上面的文件表明/usr 分区增长的太大了,所以/usr/share必须被加入。是该换一个大点的硬盘的时候了。

在目标电脑上,使用 parted (推荐) 或者你喜爱的分区工具(Qtparted 是一个很好的图形界面的工具,据说是Partition Magic 克隆版)。创建的分区不能比源电脑上对应的分区小。另外,别忘了 swap 分区。保存好分区表,在刚创建的分区上创建文件系统,可以使用
mke2fs -j -L <label> /dev/xxx
这里 xxx 是你的分区名,然后用 <label>设置卷标号。我经常使用如 “ /usr”一类的作为卷标。你也可以通过 tune2fs(8)来设置各种任务,比如周期性的文件系统检查。

传送文件系统

首先你需要加载所有新创建的分区,我们先从主文件系统(“/”)开始,其他的按顺序依次进行。当然可以将源电脑上的两个分区整合到目标电脑上的一个分区上去,事实上,这正是我们要做的——将上例中 /usr//usr/share合并为一个分区。 我们加载未来的主文件系统
mount /dev/xxx   /mnt
在复制的时候,转到目标目录里面去是很必要的
cd /mnt
在目标电脑上键入
ssh sourcePC '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 <target-ip>   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.
中文名: 电脑分身克隆软件 英文名: ASTER 别名: 软电脑,软PC 资源格式: 压缩包 版本: 更新Win7x64可设IP与汉化 发行时间: 2011年 制作发行: IBIK 地区: 俄罗斯 语言: 简体中文 简介:ASTER是一个程序(只有一个程序!),它允许多个用户同时独立工作,如果他们每个人有自己的PC与一台计算机。ASTER是一个共享的计算机访问软件解决方案,并且不使用终端机和终端站。官方英文翻译的废话就不多说了.此软件的主要特点:1、 一台电脑部署给多用户同时使用 相当于分身变成N台计算机。2、无需内置任何硬件 只需要键盘鼠标和显示器若干即可当作一台反文旁虫立计算机使用。3、性能卓越 淘宝上售卖的电脑终端机性能低劣 用了此软件 副机的性能和主机差不多。4、目前是唯一解决了AMD显卡无法一拖二开3D的毛病。5、适合所有家用操作系统 目前兼容的有:2000/windows xp/Vista/Windows7/Windows8既然有软路由,就有软电脑。(软PC)可以和软路由一样完全摆脱硬件**,只需要软件安装可实现路由器(电脑)所有功能。早在2004年中国最大的计算机销售商联想就推出过一台主机配两个显示器和两套键盘鼠标的产品,可惜市场反响不好高层已经放弃这一计划了。最早的时候是依靠一种叫电脑分身卡的产品 进行分机作业。 安装说明:压缩包内区分英文与汉化版,不要重复安装和激活。安装ASTER需要知道的十件事:1.安装之前请确保您的系统是安装版,所以驱动程序先更新完毕。2.安装之前请用一键克隆把系统备份,备份一遍防止意外发生。3.安装之前请确保运行程序或者游戏没有出现过内存不能为:read 或者written 的错误4.安装之前请确保有独立声卡或者外置声卡、两套键盘鼠标等5.安装之前显卡切口显示一切正常6.安装之前请确保关闭所有防护软件(网盾杀毒360等)7.安装之前确保硬盘有足够容量8.安装之后请马上激活然后在进行配置,重启两次即可完美使用9.安装之后更换硬件或者驱动最好运行TESTSIGNING OFF关闭 更新好之后在NO开启10.单卡拖机请注意设置系统显示器关闭时间选择为:从不 睡眠设置:从不 硬盘关闭时间:从不做好这几部 其实ASTER 没有任何不正常的问题要注意的只有Windows7 的系统Win7配置方法:安装软件后进行配置 但是ASTER的服务并没有启用,进入安装目录找到TESTSIGNING NO开启后会自动重启 所以最好先把硬件都配置完成。新手注意事项:虽然这是纯英文软件但是操作非常简单,选项很少。唯一一个注意要点就是 Video选项里的Properties 默认状态是软件加速请把它点选到 下面那个 硬件加速 也就是括号(games)的选项。l另外显卡接口是可以选择的,但只支持数字接口 。所以默认即可给他自动选择。接着是声卡的选项 那个1,2 ,3,4 代表你的机器 1是主机 2 3 4都是客户机 请自己配置即可。另一个重点 不管你做什么 请先把软件激活了在说! 这是第一步骤推荐配置与拖机:本人建议 您选择拖动机器数量和显卡成正比,一张显卡拖一台机器。这样玩游戏没有冲突 没有闪屏问题。更新日志: 2012年6月9日 修复已知BUG 增加工作者IP设置 支持一台电脑多用户接入游戏对战完全防封。随便写两套配置已做参考:CPU: 4核及其以上多核心CPU内存:4G以上多通道内存硬盘:读写500Ms 及其以上SSD显卡:一张显卡拖一台机 按需选择 老显卡也可以。主板:支持两路以上SLI的为宜电源:500W以上均可键盘鼠标: USB无线套装 自定义声卡:集成+独立官方最低硬件要求:英特尔奔腾III的Microsoft Windows 2000 /微软视窗XP(32位软件版本)256 MB的RAM(128 MB + 64MB每个终端,包括主终端) 。推荐内存为512 MB。键盘和鼠标连接:USB双输出的视频卡或2个单输出同系列的视频卡。支持双输出的视频卡系列以下(见附录1,2,3)广泛推荐的视频卡列表:PCI - E的Nvidia的GeForce 6**,7** GF,GF 8** GF 9**,GF 2XX,GF GT 2XX GF的的Quadro 2XX NVS,GF的的Quadro 4XX NVS - (4视频输出)AMD - ATI的Radeon HD 3**,4**的Radeon HD和Radeon HD 5**。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值