如何克隆/备份/打包 已安装好的 linux 系统

2015-09-08 15:39:20 +08:00
 xfack

遇到一个问题,如何在一个已安装好的 linux 上备份 /克隆 /打包 /封装成 iso 或是其他。
linux 上装好了 lnmp ,想到别的机器上安装系统的时候直接由 lnmp 的环境。

翻了下帖子,看了好几个,都是备份下来可以,但是要恢复回去的时候就报错了

想着用 Docker 来折腾 lnmp 的,但是好像别的机子上不能上网。也没有发现说机子无网的时候, docker 还能用。

求还有其他方法吗

6593 次点击
所在节点    Linux
29 条回复
songco
2015-09-08 15:41:58 +08:00
这种情况还是用虚拟化环境比较方便, vm template...
loading
2015-09-08 15:43:07 +08:00
建议学写安装脚本,而不是你这样~


可以搜索
gentoo tar 打包
zzwangsh
2015-09-08 15:45:40 +08:00
其实你就想省心省力,到了新机子上就有 lnmp 环境可用,我能想到的办法
1 ,如果是虚拟机就直接 ovf
2 , shell 脚本或者 ansible 一键安装
3 ,这种方法可能会有问题;你源码安装的话就直接把编译安装后的目录 cp 到新机子
4 ,你说 docker 也可以,只要内容架一个 registry server

个人推荐 2 ,省心省力。。。。

给分!
xfack
2015-09-08 17:00:23 +08:00
@loading 要哭,安装脚本写了,主要是时间紧迫。。。客户变态。
xfack
2015-09-08 17:01:24 +08:00
@zzwangsh ovf 客户不允许。 shell 的话,看了下需求。 lnmp 只是小部分,后面还有很多!!很多!!很多!!
xfack
2015-09-08 17:03:19 +08:00
@zzwangsh

1. ovf 客户不允许。
2. shell 的话,看了下需求。 lnmp 只是小部分,后面还有很多!!很多!!很多!!
3. 这个主要是怕另外一个系统库或包不兼容啥的,
4. docker 的话,是可以,然后上面又说。只是封装 debian 。。 debian 的话有很多工具可以打包,一开始说的是 centos ,
xfack
2015-09-08 17:04:17 +08:00
@loading @songco @zzwangsh 非常感谢,已点感谢
Bardon
2015-09-08 17:36:22 +08:00
统一环境部署,不是 dd 或 cpio 是首选吗?
zzwangsh
2015-09-08 17:37:06 +08:00
@xfack shell 只是举例,那你可以用 ansible 或者 puppet 或者 saltstack ,都是做配制管理的。
个人建议 ansible ,入门简单,上手快。一劳永逸。
deadEgg
2015-09-08 17:37:46 +08:00
docker 把
holinhot
2015-09-08 17:40:31 +08:00
vcenter 适合你
adexbn
2015-09-08 17:42:04 +08:00
给你说说以前我们公司的项目的管理要求:
1 、所有依赖的软件包,从源码静态编译安装,例如从源码编译 mysql , nginx
2 、所以依赖的软件包,统一安装到指定目录,配置文件统一保存在指定目录,例如 /opt/公司名 /mysql
3 、所有项目文件,一并安装部署到上述目录,例如 /opt/公司名 /myproject
4 、发布的时候,整个打包 /opt/公司名,目录打包为 tar 包,到新机器上解压即可运行。
xfack
2015-09-08 17:43:18 +08:00
@deadEgg docker 客户不允许
xfack
2015-09-08 17:44:56 +08:00
@holinhot 客户那是 vcenter,但是目前我们开发的东西在自己的虚拟机里,所以要弄一个部署包,到时候可以去客户那,简单部署

PS :客户不是只有一台 vcenter ,有很多,在不同的地方。
xfack
2015-09-08 17:47:06 +08:00
@adexbn 那那些依赖库怎么办?也是源码编译?还是说,打包成 rpm ?比如说依赖 gcc 啊,什么什么的这些依赖库,主要是怕这个,工具的安装其实都还好,
holinhot
2015-09-08 17:53:45 +08:00
@xfack 按你这样说直接做 ovf 不就好了 简单快捷
SourceMan
2015-09-08 17:58:25 +08:00
Docker 好呀,可惜你说不允许
adexbn
2015-09-08 18:57:24 +08:00
@xfack 关于依赖库
1 、因为大部分都是从源码安装的,所以所需的依赖库在编译的时候就已经静态链接到编译好的执行文件里,或者相应的目录了。比如 mysql 用到的,因为在编译的时候指定了--prefix=/opt/公司名 /mysql ,所以有关的库基本都在 /opt/公司名 /mysql/lib 下面,打包的时候自然一起打包进去了。
2 、有些系统库,比如特定版本的 openssl ,特定版本的 mcrypt 等等,或者从源码安装到 /opt/公司名 /库名,或者从系统位置(比如 /usr/lib64/libxxxx.so/)拷贝到 /opt/公司名 /lib/目录下。环境变量会带上 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/公司名 /lib/,所以也 ok 的。
~~~
就 LNMP 而言,其实依赖的系统库真的不多的,按照以前的经验,实际上真正需要单独下载源码编译的不超过 5 个,其它都在最小安装的系统里带了。
adrianzhang
2015-09-08 19:14:02 +08:00
这是一个需要用 tar 来解决的问题。思路是从 /开始 tar 成一个包,将不需要的目录 exclude 掉,比如 /tmp, /proc, /mnt 等。需要注意的是,如果备份需要将来恢复到一个硬件不同的机器,注意要把相关的 driver 目录 exclude 掉。恢复的时候,使用 tar 将这个 tar 包解包。
OpooPages
2015-09-08 22:09:06 +08:00
试试 VMwate converter standalone 还是啥的,可以把物理机转成虚拟机不就能 iso 了嘛

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

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

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

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

© 2021 V2EX