目前有一台 Ubuntu 机器已经安装好各类所需的软件,另外有几台设备也需要安装同样的软件环境,由于软件安装较为负责,所以有没有什么方法将已有的软件环境复制其他机器上?
1
ik 2020-11-15 21:25:43 +08:00 via iPhone
再生龙
|
2
sujin190 2020-11-15 21:29:18 +08:00
把硬盘拆下来对刻一下就是了啊
|
5
viko16 2020-11-15 21:37:18 +08:00 via Android
docker 不就是解决这个问题的吗🤣
|
9
felixcode 2020-11-15 21:45:53 +08:00
|
10
sujin190 2020-11-15 21:48:05 +08:00
@gxgxxn #3 无所谓吧,反正阵列加载到系统了还不是一块磁盘,复制的是逻辑盘的数据,又不是物理磁盘,不在一起的化可以考虑把现在装好的磁盘做成二进制文件,然后在弄到新盘上写进去就是了,dd 就能干这事
|
11
IDAEngine 2020-11-15 22:11:39 +08:00 via iPhone
看硬件配置了,如果硬件完全一样,直接硬盘克隆就行了
|
12
superrichman 2020-11-15 22:14:49 +08:00 via iPhone
dd 整个硬盘
|
13
joynvda 2020-11-15 22:24:10 +08:00
除了硬盘分区复制,还有把已安装的系统软件列表导出,用脚本逐一安装并且调整配置。
|
14
gxgxxn OP @felixcode 后面再研究一下,最初想要使用 docker 的,可是后来发现 docker 对 gui 支持不好就放弃了。
|
16
gxgxxn OP |
17
raaaaaar 2020-11-15 22:36:57 +08:00 via Android
Linux 下软件的概念比较模糊吧,备份 home 目录,或者整个系统比较常见。
|
18
gxgxxn OP @joynvda 重要的软件就两个,关键是其中一个软件安装很麻烦,还和系统关联性很大(一些与系统相关的配置信息是在编译前写入配置文件的)。
|
19
opengps 2020-11-15 22:48:51 +08:00 via Android
系统镜像,硬盘克隆
|
20
sirius1024 2020-11-15 23:02:05 +08:00
做成镜像,用啥软件 boot 起来就行了,或者统一推送安装
Ansible/Salt Stack/IPMI/PXE... |
21
naoh1000 2020-11-15 23:10:14 +08:00
dd if=/dev/原硬盘 of=/dev/目标硬盘
如果目标硬盘容量和原硬盘相等,你将得到数据完全相同的两块硬盘 |
22
KENNHI 2020-11-16 00:10:13 +08:00
打包镜像,PXE 自动安装
|
23
Jirajine 2020-11-16 00:13:29 +08:00 via Android
都是相同型号的电脑的话,直接 rsync 一下。
|
24
laminux29 2020-11-16 00:36:34 +08:00
WinPE 启动,各种网络克隆工具。
|
25
skydiver 2020-11-16 00:36:37 +08:00
直接 rsync
|
26
systemcall 2020-11-16 00:52:30 +08:00 via Android
硬盘取下来丢对拷机里按一下就行了,注意方向
|
27
Osk 2020-11-16 01:40:50 +08:00 via Android
不推荐 dd,这方法很不合适,适合用来划水,dd 一开始,然后半天后才完成,中间可以划水,这么大负荷的读写操作有些硬盘万一没扛住就糟了。
通常是基于文件的复制,做成 tar 包或者 rsync 复制都行,通常来说,由于文件系统 uuid 变了,需要重新生成 grub.cfg 和调整 /etc/fstab,linux 在这方面没啥玄学。 如果非要用基于块设备的克隆,也要选择能够理解文件系统的工具,只拷贝有效数据块,不过工具比较少。 |
29
smartyang 2020-11-16 02:51:03 +08:00 via Android
diskgunis 试试
|
30
msg7086 2020-11-16 04:17:56 +08:00
rsync 对拷,然后网络配置和 fstab 改一下,重新生成一下 grub 配置,就行了。
Linux 系统的安装过程是很透明很简单的,本质上就是把所有的软件包解压出来放进分区里,然后执行配置脚本,最后改改常见的配置(时区啊语言啊 fstab 啊之类),安装并配置一下 grub,就完事了。你自己写个系统安装程序也是分分钟的事情。 |
31
dayeye2006199 2020-11-16 05:04:06 +08:00
可以用 chef 或者 puppet
|
32
AmrtaShiva 2020-11-16 07:55:02 +08:00 via iPhone
rsync+27 楼方法搞好几次了 没毛病
|
33
alfred42 2020-11-16 07:55:44 +08:00 via iPhone
chef
|
36
gxgxxn OP |
37
Osk 2020-11-16 08:23:26 +08:00 via Android
@gxgxxn 不要求
一般流程: 启动到 live-cd. 解压备份或复制. chroot 到新系统. 编辑 fstab,hostname. update-initcpio/mkinitcpio (视发行版),这一步可消除大部分硬件差异导致的启动问题. grub-install /dev/xxx 安装 bootloader. update-grub / grub-mkconfig 重新生成 grub.cfg. 只要把启动流程理清楚了也就那么回事儿。硬件方面,只要没有啥需要单独安装驱动的硬件都还好 |
38
popil1987 2020-11-16 08:58:44 +08:00
必须全新安装后用脚本自动化安装你的软件。因为安装成功后会生成一些以你的硬件为来源的信息文件,比如 udev 设备之类。批量部署可以用 cobbler,全新安装后会运行指定脚本,配置比较复杂,坑比较多。或者批量部署后用自动化软件部署你的软件,比如 ansible (比较麻烦),pyinfra (比较简洁)等
另外,docker 也是可以的,docker 可以有图形界面,docker hub 上有 xfce 这种安装桌面的 docker 。然后通过 vnc 或者 html 访问。不过得些 Dockerfile,写好 Dockerfile 部署不用担心出错,用脚本担心出错 |
40
ungrown 2020-11-16 10:34:31 +08:00
我想说,虚拟机不行吗?
这年头主流虚拟机的性能损耗都非常微小了(虽然有些接口的 IO 还是有拉胯的可能) 如果能接受虚拟机部署的话,那么一个虚拟机镜像比此楼其他方案都方便得多得多得多 |
41
kiracyan 2020-11-16 10:56:31 +08:00
写安装脚本
|
42
opengps 2020-11-16 11:08:53 +08:00
重新看了下帖子,PXE 网络安装系统似乎更适合
|
43
KarPy 2020-11-16 11:20:33 +08:00
把这个做成镜像,然后 pxe 安装
|
44
flowercoder 2020-11-16 11:28:09 +08:00
一楼就是正确答案了,再生龙真的好用,好像是湾湾搞出来的,确实好用,相当快速,连系统都不用装了。就是硬件最好一样,否则还要装一些驱动啥的。
|
45
optimus 2020-11-16 12:31:25 +08:00
用 ghost
|
46
AmrtaShiva 2020-11-16 12:59:30 +08:00 via iPhone
@gxgxxn 我之前是同一台笔记本换硬盘做过一次 后来在换过的硬盘上 又把笔记本换成 itx CPU 也换了 没毛病😌
|
47
mafeifan 2020-11-16 13:01:19 +08:00
先磁盘生成原始映像,然后其他实例基于这个映像创建,这种比较快
|
48
tairan2006 2020-11-16 13:19:04 +08:00
做镜像
|
49
huang86041 2020-11-16 13:27:15 +08:00
如果不能保证机器配置都是一样的,写安装脚本吧.
|
50
ren2881971 2020-11-16 13:41:12 +08:00
playbook
|
51
gxgxxn OP @flowercoder 这个软件功能确实很强大,但是试了几次都备份失败,不知道什么原因。
|
52
charlie21 2020-11-16 14:06:48 +08:00
详细记录第一台机器的各软件的安装步骤,然后在第二台电脑上走一遍
|
53
gxgxxn OP @KarPy
@tairan2006 请问有没有什么镜像制作工具推荐?已经找到 Mondo 、systemback 两款软件,但是前者 Ubuntu18 上没有可用安装包,使用源码安装后,可能是缺失什么依赖库的原因,总是启动失败;后者制作出来的镜像文件启动失败,会出现(initramfs)mount:mounting /dev/loop0 on //filesystem.squashfs failed: 错误。 |
54
julyclyde 2020-11-16 14:08:17 +08:00
如果都是 apt/dpkg 的话,可以用 dpkg --get-selections
dd 整个硬盘不合适,会把 UUID 之类的也带过来的 |
55
gxgxxn OP @huang86041
@kiracyan @charlie21 安装记录有,也有所需软件的安装脚本,但是在其他机器上安装时可能不能联网,那样的话就需要手动解决依赖问题,想想都可怕,而且安装过程中也有可能遇到一些其他问题。 |
56
tankren 2020-11-16 14:45:02 +08:00
pxe 无人安装
|
57
goosling 2020-11-16 15:26:51 +08:00
ansible, 写一个 playbook 同意安装配置一下,以后配置改起来重新 run 一下就 ok 了,就是第一次麻烦一些。
不能联网指的是不能连公网还是机器之间都不能连?如果不能连公网还是可以使用 ansible |
58
wccc 2020-11-16 15:51:48 +08:00
https://github.com/teejee2008/timeshift
https://dev.to/rahedmir/how-to-use-timeshift-from-command-line-in-linux-1l9b 装一个 timeshift 导出备份到硬盘 然后在恢复应该就行了 |
59
flowercoder 2020-11-16 15:52:27 +08:00
@gxgxxn 仔细看下官方操作文档,如果还不行,它可以选中文的,很简单的。再不行就确保一块硬盘,重装系统和软件再试备份。我那时候 100 多台机器都是这么装的,Linux 支持很好
|
60
clino 2020-11-16 15:57:05 +08:00
|
61
402124773 2020-11-16 15:57:10 +08:00
一楼说的那个再生龙就是搞这个的
|
62
Death 2020-11-16 18:12:00 +08:00
楼上和一楼提到的 Clonezilla 就是比较方便的镜像方式了,如果设备多还可以用 Clonezilla Server Edition
|
63
dorothyREN 2020-11-16 18:33:51 +08:00
ansible+playbook
|
64
unlighted 2020-11-16 19:31:40 +08:00 via Android
clonezilla 不太好,还是拿脚本装环境好
|
65
fox0001 2020-11-16 20:02:11 +08:00 via Android
|
66
user0 2020-11-17 08:07:00 +08:00 via Android
再生龙+1 我都用好多年了,特别方便。平时喜欢在自己电脑上瞎搞,所以每次瞎搞之前再生龙备份一下,之后无脑恢复就行了。用 tar 或者 rsync 也行,不过需要搞 grub,不是那么无脑
|
67
tadebao 2020-11-17 17:27:24 +08:00
#dd bs=4M if=/dev/sdb of=/dev/sdc &&sync 了解下
|
68
gxgxxn OP 感谢各位的帮助,最终选择的方式是使用 Cubic 操作已有镜像,在其中安装自己所需的软件。
|