copy完整一个系统或硬盘

2013-05-16 00:47:21 +08:00
 pyKun
1. 如果系统只存在一个分区上,那么问题可以简化为完全拷贝硬盘
2. 最安全的方法是直接mount -root 。。。。。,但是对于操作系统来说,会更复杂点,很多细节不知道在哪解释的清楚
3. 最暴力的方法是dd,如果目标和源对象大小不同,调整的方法也不难的


问题:
1. 有其他的思路否
2. dd有多少安全隐患,dd在商业应用上有哪些?
5989 次点击
所在节点    Linux
10 条回复
likuku
2013-05-16 01:01:42 +08:00
用tar+gz 备份/迁移/快速安装 至少上百个 gentoo 的人表示情绪稳定。
xuelang
2013-05-16 07:40:08 +08:00
mac 下还可以用Carbon Copy Cloner
shiweifu
2013-05-16 08:26:07 +08:00
@likuku
直接拷过去,然后mount root 装grub 么?
ybur
2013-05-16 09:44:17 +08:00
试试 Clonezilla,应该能满足你的需求。
coronin
2013-05-16 09:47:42 +08:00
clonezilla很多年了
pyKun
2013-05-16 10:14:52 +08:00
likuku
2013-05-16 12:05:56 +08:00
@shiweifu
@pyKun

打包前,在 /boot 下 ln -s . boot 建立一个 软链接 boot -> . 以方便之后grub的操作。

tar 使用 p参数记录所有文件和目录的权限和属主 --excloud 避开一些特殊的目录,假设生成的压缩包.tgz放在/backup/:
/proc/*
/sys/*
/etc/udev/rules.d/一些特殊对象
/backup/*.tgz #避开生成的压缩包

在新机器上,以 livecd 启动(最好相同平台的相同发行版),对硬盘分区,格式化,
live 环境里 将 新硬盘里准备作/ 的分区 mount 到某目录,例如 /o
在/o 里建立 boot home usr var 登目录(假若准备给这些使用独立分区),
将分区都mount到对应位置,
在 /o 下 tar xvf /path/backup.tgz
mount --bind /dev /o/dev && mount --bind /proc /o/proc && mount --bind /sys /o/sys

接着,chroot /o /bin/bash
或许要修改 chroot 环境(新机器未来的新系统)的 /etc/fstab 和 网络设定什么
执行 grub
set root (hd0,0) #假设boot是独立分区,使用第一个硬盘的第一个分区
setup (hd0)
exit
重启新机器,完毕。

我自用的 打包脚本,原本是针对 gentoo 的,稍作变动也可用于其它发行版:
https://gist.github.com/likuku/5589316
pyKun
2013-05-16 12:23:17 +08:00
@likuku
描述的很棒
其实和fedorahosted里的livecd制作流程基本一样的,只不过没有package的过程了
在犹豫这么做或者直接dd
toctan
2013-05-16 15:27:27 +08:00
@pyKun 用 rsync 也行,上次我是把整个系统拷到一个U盘里,新电脑上分区挂载把文件拷回去,改改 /etc/fstab,装好 grub 就行了。

https://wiki.archlinux.org/index.php/Full_System_Backup_with_rsync
notgood
2019-10-01 22:38:21 +08:00
@toctan V 友, 请问我想直接克隆 VPS A 的系统 到 VPS B 上, 通过 ssh 方式来运行 rsync, 命令行这样写有问题吗? 谢谢指导;
rsync -avz --progress --delete root@147.95.247.49:/dev/vda /dev/vda

VPS A 和 B 都是 centos7 x64, 同步完最后 VPS B 需要先执行 grub2-mkconfig -o /boot/grub2/grub.cfg 再执行 grub2-install /dev/vda 吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/69016

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX