V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
xfack
V2EX  ›  Linux

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

  •  
  •   xfack · 2015-09-08 15:39:20 +08:00 · 6839 次点击
    这是一个创建于 3397 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    求还有其他方法吗

    29 条回复    2015-09-18 15:54:58 +08:00
    songco
        1
    songco  
       2015-09-08 15:41:58 +08:00   ❤️ 1
    这种情况还是用虚拟化环境比较方便, vm template...
    loading
        2
    loading  
       2015-09-08 15:43:07 +08:00 via iPhone   ❤️ 1
    建议学写安装脚本,而不是你这样~


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

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

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

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

    PS :客户不是只有一台 vcenter ,有很多,在不同的地方。
    xfack
        15
    xfack  
    OP
       2015-09-08 17:47:06 +08:00
    @adexbn 那那些依赖库怎么办?也是源码编译?还是说,打包成 rpm ?比如说依赖 gcc 啊,什么什么的这些依赖库,主要是怕这个,工具的安装其实都还好,
    holinhot
        16
    holinhot  
       2015-09-08 17:53:45 +08:00
    @xfack 按你这样说直接做 ovf 不就好了 简单快捷
    SourceMan
        17
    SourceMan  
       2015-09-08 17:58:25 +08:00
    Docker 好呀,可惜你说不允许
    adexbn
        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 个,其它都在最小安装的系统里带了。
    adrianzhang
        19
    adrianzhang  
       2015-09-08 19:14:02 +08:00
    这是一个需要用 tar 来解决的问题。思路是从 /开始 tar 成一个包,将不需要的目录 exclude 掉,比如 /tmp, /proc, /mnt 等。需要注意的是,如果备份需要将来恢复到一个硬件不同的机器,注意要把相关的 driver 目录 exclude 掉。恢复的时候,使用 tar 将这个 tar 包解包。
    OpooPages
        20
    OpooPages  
       2015-09-08 22:09:06 +08:00 via Android
    试试 VMwate converter standalone 还是啥的,可以把物理机转成虚拟机不就能 iso 了嘛
    zhuang
        21
    zhuang  
       2015-09-08 22:39:00 +08:00
    docker 可以 export/import 镜像或者 save/load 容器。
    ceclinux
        22
    ceclinux  
       2015-09-09 00:17:09 +08:00
    我喜欢最省心最暴力最慢的方法, dd 完压缩= =
    jarlyyn
        23
    jarlyyn  
       2015-09-09 00:42:10 +08:00
    请使用 docker.

    或者虚拟机。

    克隆打包的想法。

    觉得不靠谱。

    网络环境,磁盘 uuid 之类都不是该直接打包的东西。

    还可能有驱动之类的问题。
    omph
        24
    omph  
       2015-09-09 01:16:44 +08:00
    动态库一起打包
    修改环境变量 LD_LIBRARY_PATH 指定动态库路径
    michaelOoO
        25
    michaelOoO  
       2015-09-09 13:30:35 +08:00
    我们使用的是再生龙 http://clonezilla.nchc.org.tw/news/, 直接用 U 盘就可以把系统复制下来,而且磁盘大小还会有压缩
    xfack
        26
    xfack  
    OP
       2015-09-09 14:50:29 +08:00
    @adexbn 好的,我这边试一下,非常感谢。
    @adrianzhang 嗯嗯,好,等会我就试一下
    @OpooPages 这个我也试了,打包下来没事,装上去报错了,估计我没有搞好,
    @zhuang 客户不允许。。非常惆怅。
    @ceclinux 果然粗暴
    @jarlyyn 驱动这块不会有什么问题,因为都是不会装驱动的,客户的配置和我们的配置是一样的,
    @omph 好,等下就尝试一下
    @michaelOoO 再生龙还没有用,昨天研究了下,好像有点复杂(没有认真看文档,只是初略浏览)

    谢谢各位~!
    adrianzhang
        27
    adrianzhang  
       2015-09-09 19:52:45 +08:00
    @xfack 忘了提醒你。用 tar 的话,要加-p 选项压包和解包。
    meppy
        28
    meppy  
       2015-09-17 15:48:44 +08:00
    clonezilla
    PyPog
        29
    PyPog  
       2015-09-18 15:54:58 +08:00
    clonezilla ,可以将整个系统打包成一个 iso 文件
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2841 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:58 · PVG 22:58 · LAX 06:58 · JFK 09:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.