遇到一个问题,如何在一个已安装好的 linux 上备份 /克隆 /打包 /封装成 iso 或是其他。
linux 上装好了 lnmp ,想到别的机器上安装系统的时候直接由 lnmp 的环境。
翻了下帖子,看了好几个,都是备份下来可以,但是要恢复回去的时候就报错了
想着用 Docker 来折腾 lnmp 的,但是好像别的机子上不能上网。也没有发现说机子无网的时候, docker 还能用。
求还有其他方法吗
1
songco 2015-09-08 15:41:58 +08:00 1
这种情况还是用虚拟化环境比较方便, vm template...
|
2
loading 2015-09-08 15:43:07 +08:00 via iPhone 1
建议学写安装脚本,而不是你这样~
可以搜索 gentoo tar 打包 |
3
zzwangsh 2015-09-08 15:45:40 +08:00 1
其实你就想省心省力,到了新机子上就有 lnmp 环境可用,我能想到的办法
1 ,如果是虚拟机就直接 ovf 2 , shell 脚本或者 ansible 一键安装 3 ,这种方法可能会有问题;你源码安装的话就直接把编译安装后的目录 cp 到新机子 4 ,你说 docker 也可以,只要内容架一个 registry server 个人推荐 2 ,省心省力。。。。 给分! |
5
xfack OP @zzwangsh ovf 客户不允许。 shell 的话,看了下需求。 lnmp 只是小部分,后面还有很多!!很多!!很多!!
|
6
xfack OP @zzwangsh
1. ovf 客户不允许。 2. shell 的话,看了下需求。 lnmp 只是小部分,后面还有很多!!很多!!很多!! 3. 这个主要是怕另外一个系统库或包不兼容啥的, 4. docker 的话,是可以,然后上面又说。只是封装 debian 。。 debian 的话有很多工具可以打包,一开始说的是 centos , |
8
Bardon 2015-09-08 17:36:22 +08:00
统一环境部署,不是 dd 或 cpio 是首选吗?
|
9
zzwangsh 2015-09-08 17:37:06 +08:00
@xfack shell 只是举例,那你可以用 ansible 或者 puppet 或者 saltstack ,都是做配制管理的。
个人建议 ansible ,入门简单,上手快。一劳永逸。 |
10
deadEgg 2015-09-08 17:37:46 +08:00
docker 把
|
11
holinhot 2015-09-08 17:40:31 +08:00
vcenter 适合你
|
12
adexbn 2015-09-08 17:42:04 +08:00
给你说说以前我们公司的项目的管理要求:
1 、所有依赖的软件包,从源码静态编译安装,例如从源码编译 mysql , nginx 2 、所以依赖的软件包,统一安装到指定目录,配置文件统一保存在指定目录,例如 /opt/公司名 /mysql 3 、所有项目文件,一并安装部署到上述目录,例如 /opt/公司名 /myproject 4 、发布的时候,整个打包 /opt/公司名,目录打包为 tar 包,到新机器上解压即可运行。 |
14
xfack OP @holinhot 客户那是 vcenter,但是目前我们开发的东西在自己的虚拟机里,所以要弄一个部署包,到时候可以去客户那,简单部署
PS :客户不是只有一台 vcenter ,有很多,在不同的地方。 |
15
xfack OP @adexbn 那那些依赖库怎么办?也是源码编译?还是说,打包成 rpm ?比如说依赖 gcc 啊,什么什么的这些依赖库,主要是怕这个,工具的安装其实都还好,
|
17
SourceMan 2015-09-08 17:58:25 +08:00
Docker 好呀,可惜你说不允许
|
18
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 个,其它都在最小安装的系统里带了。 |
19
adrianzhang 2015-09-08 19:14:02 +08:00
这是一个需要用 tar 来解决的问题。思路是从 /开始 tar 成一个包,将不需要的目录 exclude 掉,比如 /tmp, /proc, /mnt 等。需要注意的是,如果备份需要将来恢复到一个硬件不同的机器,注意要把相关的 driver 目录 exclude 掉。恢复的时候,使用 tar 将这个 tar 包解包。
|
20
OpooPages 2015-09-08 22:09:06 +08:00 via Android
试试 VMwate converter standalone 还是啥的,可以把物理机转成虚拟机不就能 iso 了嘛
|
21
zhuang 2015-09-08 22:39:00 +08:00
docker 可以 export/import 镜像或者 save/load 容器。
|
22
ceclinux 2015-09-09 00:17:09 +08:00
我喜欢最省心最暴力最慢的方法, dd 完压缩= =
|
23
jarlyyn 2015-09-09 00:42:10 +08:00
请使用 docker.
或者虚拟机。 克隆打包的想法。 觉得不靠谱。 网络环境,磁盘 uuid 之类都不是该直接打包的东西。 还可能有驱动之类的问题。 |
24
omph 2015-09-09 01:16:44 +08:00
动态库一起打包
修改环境变量 LD_LIBRARY_PATH 指定动态库路径 |
25
michaelOoO 2015-09-09 13:30:35 +08:00
我们使用的是再生龙 http://clonezilla.nchc.org.tw/news/, 直接用 U 盘就可以把系统复制下来,而且磁盘大小还会有压缩
|
26
xfack OP @adexbn 好的,我这边试一下,非常感谢。
@adrianzhang 嗯嗯,好,等会我就试一下 @OpooPages 这个我也试了,打包下来没事,装上去报错了,估计我没有搞好, @zhuang 客户不允许。。非常惆怅。 @ceclinux 果然粗暴 @jarlyyn 驱动这块不会有什么问题,因为都是不会装驱动的,客户的配置和我们的配置是一样的, @omph 好,等下就尝试一下 @michaelOoO 再生龙还没有用,昨天研究了下,好像有点复杂(没有认真看文档,只是初略浏览) 谢谢各位~! |
27
adrianzhang 2015-09-09 19:52:45 +08:00
@xfack 忘了提醒你。用 tar 的话,要加-p 选项压包和解包。
|
28
meppy 2015-09-17 15:48:44 +08:00
clonezilla
|
29
PyPog 2015-09-18 15:54:58 +08:00
clonezilla ,可以将整个系统打包成一个 iso 文件
|