如何克隆/备份/打包 已安装好的 linux 系统 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
xfack
V2EX    Linux

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

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

    遇到一个问题,如何在一个已安装好的 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     Solana     1223 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 23:50 PVG 07:50 LAX 16:50 JFK 19:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86