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

如何将一台机器上的 ubuntu 系统(安装很多软件以及环境)打包,然后重新安装到另一台机器上

  •  1
     
  •   ubear1991 · 2016-09-29 13:41:34 +08:00 · 8236 次点击
    这是一个创建于 3009 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题。 主要是不想再重新配置。

    49 条回复    2016-09-30 19:42:35 +08:00
    7654
        1
    7654  
       2016-09-29 13:51:54 +08:00
    可以直接硬盘对硬盘 dd
    或者先创建比实际大小大一些的空白 img ,然后挂载格式化,再 dump
    需要用到的命令 losetup , mount , dd , parted , kpartx , dump
    最后将 img 文件写到新硬盘上
    lotina69
        2
    lotina69  
       2016-09-29 13:53:14 +08:00
    docker
    Nicksxs
        3
    Nicksxs  
       2016-09-29 13:54:21 +08:00
    同求方法
    adfsadfssfd
        4
    adfsadfssfd  
       2016-09-29 13:55:53 +08:00
    怎么复制并开启全盘加密?
    Tyanboot
        5
    Tyanboot  
       2016-09-29 14:02:54 +08:00   ❤️ 2
    1 )如 1 楼所说,硬盘对硬盘 DD 过去,如果源分区小于目标机器上的目标分区,可以直接 dd if=源分区 of=目标分区 这样直接复制过去,然后再 e2fsck -f 一下和 resize2fs 处理一下就可以了。如果源分区大于目标的话,只能先缩小了。
    如果两个硬盘不能挂载到一个机器上,可以先把源分区 dd 到一个 img 文件上,复制过去之后再 dd 出去。


    2 )用 tar 或者 cpio 打包好,再复制归档文件过去解压出来, cpio 是可以保证权限和 link 的正确性的, tar 好像也能。


    以上两个方法都需要重新建立引导(这不是事
    xfan001
        6
    xfan001  
       2016-09-29 14:04:35 +08:00
    再生龙?
    alouha
        7
    alouha  
       2016-09-29 14:25:51 +08:00
    二楼说的对……
    sleeperqp
        8
    sleeperqp  
       2016-09-29 14:27:37 +08:00 via iPhone
    docker
    SunisDown
        9
    SunisDown  
       2016-09-29 14:32:33 +08:00
    rsync clone system install

    用上面几个关键字 Google
    misaka19000
        10
    misaka19000  
       2016-09-29 14:35:42 +08:00
    docker 不就是为了解决这种问题而产生的吗?
    reus
        11
    reus  
       2016-09-29 15:42:00 +08:00
    rsync 复制
    reus
        12
    reus  
       2016-09-29 15:42:52 +08:00
    说 docker 的用过 docker 吗究竟?
    keikeizhang
        13
    keikeizhang  
       2016-09-29 17:20:40 +08:00
    论 docker 存在的意义!
    mikicomo
        14
    mikicomo  
       2016-09-29 17:31:08 +08:00
    借楼问问 windows 系统的解决方案
    ahkxhyl
        15
    ahkxhyl  
       2016-09-29 17:32:59 +08:00
    docker 没研究成功! vagrant 研究成功!!
    PyPog
        16
    PyPog  
       2016-09-29 17:59:22 +08:00 via Android
    @Tyanboot 感谢,之前遇到 dd 之后起不来,估计是没有执行 e2fsck 和 resize2fs ,受教了
    helixzz
        17
    helixzz  
       2016-09-29 18:05:56 +08:00
    我们在用 CloneZilla ……
    Tink
        19
    Tink  
       2016-09-29 18:16:08 +08:00
    再生龙或者

    rsync -aAXvl --exclude={/dev/,/proc/,/sys/,/tmp/,/run/,/mnt/,/media/,/lost+found/,/home/USER/.Trash/} / /Destination/Backup/Directory/
    just1
        20
    just1  
       2016-09-29 18:18:39 +08:00 via Android
    docker 不持久化吧。。
    rawk
        21
    rawk  
       2016-09-29 18:27:12 +08:00 via Android
    用 dd 生成 img 后在新的硬盘上挂载,然后
    option A :直接复制过去,需要手动修复挂载文件 /etc/fstab
    option B :直接 dd 回去,需要事先留一个大小大于 img 的空白区域
    20150517
        22
    20150517  
       2016-09-29 18:32:10 +08:00
    @Tyanboot 我一直不明白,你 dd 的话,你分区表怎么办?比如我现在 /dev/sda1 是 100GB,分了一个区,/dev/sdb1 是 200GB,你 dd /dev/sda1 -> dev/sdb1 后,你 /dev/sdb1 就变只有 100GB 了吧?你另外 100GB 就在外面了吧

    空间不是浪费了吗
    是这样吗?
    @7654
    zhaojjxvi
        23
    zhaojjxvi  
       2016-09-29 18:34:26 +08:00 via iPhone
    @mikicomo 直接 ghost 可以的
    mikicomo
        24
    mikicomo  
       2016-09-29 18:43:32 +08:00
    @zhaojjxvi ghost 不支持增量备份的吧?有支持增量的方案吗
    gamexg
        25
    gamexg  
       2016-09-29 21:44:21 +08:00
    @20150517 resize2fs 在线扩容
    msg7086
        26
    msg7086  
       2016-09-29 21:45:10 +08:00 via Android
    @20150517 分区不能改?手动滑鸡
    20150517
        27
    20150517  
       2016-09-29 21:51:06 +08:00 via Android
    @msg7086 能改,大哥,我错了,我知道能改,就是问一下分区是不是也拷过去了
    zhidian
        28
    zhidian  
       2016-09-29 21:54:47 +08:00
    @20150517 可以 dd 整个磁盘(包括分区表啊),用 if=/dev/sda 而不是 if=/dev/sda1 , of 也是一样。这样分区表也拷过去了……==
    20150517
        29
    20150517  
       2016-09-29 21:55:47 +08:00 via Android
    @zhidian mba 启动区这种也复制了是吗
    zhaojjxvi
        30
    zhaojjxvi  
       2016-09-29 22:01:24 +08:00 via iPhone
    @mikicomo 什么叫增量?
    mikicomo
        31
    mikicomo  
       2016-09-29 22:14:18 +08:00
    @zhaojjxvi 就是我有地方的配置文件变得了,重新同步的时候不用全盘备份,只备份修改部分
    watzds
        32
    watzds  
       2016-09-29 23:50:27 +08:00 via Android
    dd 后 /etc/fstab 里 uuid 改一下,/的权限注意一下
    watzds
        33
    watzds  
       2016-09-29 23:51:19 +08:00 via Android
    还有 MBR grub 什么的安装一下
    churchmice
        34
    churchmice  
       2016-09-30 00:16:31 +08:00
    clonzilla
    mritd
        35
    mritd  
       2016-09-30 00:35:12 +08:00 via iPhone
    @reus 我也想知道……好逗比……学 docker 第一句话…… docker 不是虚拟机
    cxbig
        36
    cxbig  
       2016-09-30 00:55:04 +08:00
    如果是 AWS 这类,直接用快照生成新服务器
    这年头最好用 Docker 打包完整的服务,这样哪都方便用
    nl
        37
    nl  
       2016-09-30 00:58:34 +08:00
    同求方法!
    reus
        38
    reus  
       2016-09-30 01:09:20 +08:00
    都说了 rsync 。其他什么方法都是…… 内啥。
    https://wiki.archlinux.org/index.php/full_system_backup_with_rsync
    lalalakakaka
        39
    lalalakakaka  
       2016-09-30 07:47:10 +08:00   ❤️ 1
    clonzilla
    爽的一 B~
    jinhan13789991
        40
    jinhan13789991  
       2016-09-30 09:32:07 +08:00
    二楼说得对, docker
    zhaojjxvi
        41
    zhaojjxvi  
       2016-09-30 09:32:24 +08:00 via iPhone
    @mikicomo 我还没研究过,没听说这种方案
    likuku
        42
    likuku  
       2016-09-30 10:06:22 +08:00
    @20150517 删除需要扩容的分区,原地重建更大分区,再 resize

    参考:
    https://archlinuxarm.org/forum/viewtopic.php?f=31&t=3119
    likuku
        43
    likuku  
       2016-09-30 10:09:13 +08:00
    tar 打包,新机上 live cd 环境下再重新分区格式化,解包,重装 grub , reboot
    GGGG430
        44
    GGGG430  
       2016-09-30 10:26:19 +08:00
    早上开机(ubuntu), 屏幕全红色, 正准备这么搞呢
    0915240
        45
    0915240  
       2016-09-30 12:04:05 +08:00
    docker
    xieyudi1990
        46
    xieyudi1990  
       2016-09-30 15:02:36 +08:00 via Android
    @mikicomo Windows 照理说需要做系统部署(好像这么叫),可以参考制作 PE 的前几部。有时候直接分区对拷再启动也没啥问题。当然 mbr/uefi , bootmgr , bcd 要弄对。

    Linux 的话直接 tar -cpf 备份,再 tar -xpf 都可以。当然 mbr/uefi , grub2 (要改 udid ), fstab 需要弄对。
    mikicomo
        47
    mikicomo  
       2016-09-30 15:06:39 +08:00
    @xieyudi1990 还是上 mac 好了(#滑稽)
    Tyanboot
        48
    Tyanboot  
       2016-09-30 19:24:27 +08:00   ❤️ 1
    @20150517 所以我说了 dd 之后要 e2fsck -f 和 resize2fs 一下啊,这步就是检查分区错误顺便调整分区的,关于这一步的具体方法,可以去搜“ resize2fs 调整分区”的相关操作。

    然后你说的分区表问题, MBR 分区表位于 0 扇区,逻辑分区是链式储存的,其中 0 号扇区前 446 字节是引导,后面 64 字节是四个主分区的分区表。 GPT 则稍微复杂一点。但是不论哪种分区表,如果你 dd 的是 sdaX 的格式,虽然没有完整分区表,但是依旧是一个完整的分区,也就是如果你 dd if=/dev/sda1 of=bak.img 的话,这个 img 是可以直接 losetup+mount 使用的,当然也可以 dd 到另一个分区覆盖掉,被覆盖掉的分区就是源分区了,其大小等各项属性和源分区保持一致。对于 MBR 来说,如果你 dd 的是一个逻辑分区,那么后果就是位于被覆盖的分区之后的逻辑分区都会找不到,而对于 MBR 的主分区和 GPT 来说就没有这个后果。

    你说的"MBR 启动区”应该说的就是 MBR 0 扇区的前 446 字节,后面的分区表除非你是两个硬盘大小一样,而且你打算完全对拷,否则最好是别乱复制。。。
    Tyanboot
        49
    Tyanboot  
       2016-09-30 19:42:35 +08:00
    @likuku 我刚刚试了一下,假设把一个 1G 的分区直接 dd 到另一个原本 2G 的分区上, dd 之后直接执行 e2fsck -f 和 resize2fs 之后就可以恢复 2G 了,不需要删掉重建
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4365 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:06 · PVG 12:06 · LAX 20:06 · JFK 23:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.