目前有一台 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 fkmc 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 操作已有镜像,在其中安装自己所需的软件。 |