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

Linux 作为主力系统在换电脑后如何做数据迁移

  •  
  •   idblife · 2022-04-04 06:11:21 +08:00 · 8321 次点击
    这是一个创建于 993 天前的主题,其中的信息可能已经有所发展或是发生改变。
    mac 可以平滑迁移,软件和数据都在。
    windows 也可以通过第三方软件实现。
    那 linux 呢?
    第 1 条附言  ·  2022-04-04 09:51:26 +08:00
    是说带软件的
    比如我现在想换台笔记本
    想做到新笔记本用起来和旧笔记本一摸一样
    48 条回复    2022-04-18 02:48:55 +08:00
    MacDows
        1
    MacDows  
       2022-04-04 06:19:19 +08:00 via Android
    迁移自己需要的分区不就行了?
    最简单的 uesr
    onikage
        2
    onikage  
       2022-04-04 06:46:57 +08:00 via Android
    拆硬盘考啊
    yzbythesea
        3
    yzbythesea  
       2022-04-04 07:13:03 +08:00
    数据 rsync
    软件包管理
    tulongtou
        4
    tulongtou  
       2022-04-04 07:56:33 +08:00   ❤️ 1
    换电脑了,把旧的硬盘插新电脑上啊。据我所知,Linux 现在没有 Mac 那种不能换硬盘的,所以直接继续用旧硬盘旧好了,根本不用迁移。
    yehoshua
        5
    yehoshua  
       2022-04-04 09:09:57 +08:00   ❤️ 1
    只有数据?都是在自己的文件,比如 home 文件夹,打个包迁过去就行了。
    IvanLi127
        6
    IvanLi127  
       2022-04-04 09:25:27 +08:00 via Android
    rsync ?直接把文件拷过去就好了。
    L4Linux
        7
    L4Linux  
       2022-04-04 09:43:23 +08:00 via Android
    用 ext4 分区,迁移前缩一下,然后直接 dd 。
    idblife
        8
    idblife  
    OP
       2022-04-04 09:45:43 +08:00 via iPhone
    @yehoshua
    是说带软件的
    比如我现在想换台笔记本
    想做到新笔记本用起来和旧笔记本一摸一样
    ekidona
        9
    ekidona  
       2022-04-04 09:54:01 +08:00 via iPhone
    还有说拆硬盘的,那么装在 mac 上的 linux 怎么办。
    现实就是 linux 基本上没有 out of the box 的方案
    aloxaf
        10
    aloxaf  
       2022-04-04 09:56:10 +08:00
    直接全盘 rsync ,完事儿后改一下挂载之类的就行了
    yehoshua
        11
    yehoshua  
       2022-04-04 10:23:55 +08:00
    @idblife 我没有这样切换过硬件,不知道直接打包过去切换硬件是否可以,若可以你直接全盘复制过去即可都不用重装。否则但是你可以选择把自己的几个目录打包过去,比如 home opt etc 等。参考几个主流版本的 wiki:
    https://help.ubuntu.com/community/BackupYourSystem
    chenxytw
        12
    chenxytw  
       2022-04-04 10:27:20 +08:00   ❤️ 1
    一模一样做不到。
    也没有完美的开箱即用方案。
    主要困难在于:

    1. 是否跨架构迁移,x86 、arm 、MIPS 、POWERPC ...不过 OP 说是笔记本,就当是 x86 之间的迁移吧
    2. 指令集是否有差异?比如你从一台支持 avx512 的 intel 迁移到了一台不支持 avx512 的机器。
    3. 配置里面是否有写死的硬件信息,如网卡 mac, 硬盘 UUID, pci 插口等。

    这些问题,没有完美解决方案,也不可能完美解决。万一你有一个自己编译安装的软件呢?迁移软件是难以处理的。

    另外,mac/windows 我不是很了解,但我想也很难做到平滑迁移吧? mac 从 powerpc 转到 intel 和从 intel 转到 m1. 都有软件无法使用吧。
    Showfom
        13
    Showfom  
       2022-04-04 10:35:07 +08:00
    Arch Linux wiki 上说的直接全盘 rsync

    rsync -aAXHv --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/swapfile","/lost+found"} / 目标机器或者硬盘:/备份文件夹
    chenxytw
        14
    chenxytw  
       2022-04-04 10:57:25 +08:00
    对我自己来说,我自己够用的迁移方案:

    1. 自行备份配置文件
    2. 新电脑全新安装系统
    3. 从旧电脑包管理导出列表到新电脑安装
    4. 在新电脑编译安装非包管理器安装的软件
    5. 同步配置文件到新电脑

    数据 /代码啥的都在 homeserver 上,所以没有需要特殊处理的。
    Cu635
        15
    Cu635  
       2022-04-04 11:05:55 +08:00
    我一般都是软件新安装,然后把软件的配置文件和自己的文档这些东西拷贝过来。

    @yehoshua
    如果两边的硬件都是比较主流的话,linux 系统切换硬件都是没有问题的。
    forsky
        16
    forsky  
       2022-04-04 11:13:23 +08:00
    我也本想 linux 做主力机, 无奈,office 是我的主战场啊
    975779964
        17
    975779964  
       2022-04-04 11:42:05 +08:00   ❤️ 1
    用 rsync 就可以 了,前提是 你要准备两个 u 盘 ,本质上就是 把除了 /proc 等 目录 全部拷贝 到新电脑 ,然后做下磁盘引导就行了,很容易的 ,我写了 记录 arch linux 迁移 的 ,你可以 参考下 https://www.cnblogs.com/ifnk/p/15680528.html
    theRealWhexy
        18
    theRealWhexy  
       2022-04-04 11:43:30 +08:00 via iPhone
    Linux 的设计里本身 kernel 就是和 filesystem 分开的,带着旧电脑的 filesystem 迁移就行了
    huangmingyou
        19
    huangmingyou  
       2022-04-04 11:46:41 +08:00
    我一般是用 ansible 来初始化系统,安装软件,拷贝配置文件等。
    duke807
        20
    duke807  
       2022-04-04 12:38:57 +08:00 via Android
    換了好幾次電腦,一直是全盤 dd 對拷
    yehoshua
        21
    yehoshua  
       2022-04-04 13:11:46 +08:00 via Android
    @Cu635 学到了,都是自己用真没切换过硬件。感谢。
    macrorules
        22
    macrorules  
       2022-04-04 13:29:31 +08:00
    没这么弄过, 窃以为,可以 live USB 启动,然后两个 m2 硬盘挂上,dd

    rsync 会把磁盘分区信息拷过去吗?
    jim9606
        23
    jim9606  
       2022-04-04 14:06:20 +08:00
    想一模一样是不可能的,商业 OS 不搞点差异化体验才不正常。
    目前仅有可以保证系统迁移平滑的只有两种应用:纯 Web 应用和自带云同步(可能要花不少钱)且有多平台支持的应用。其他应用,但凡支持离线本地使用的你基本不用指望了。
    jim9606
        24
    jim9606  
       2022-04-04 14:08:33 +08:00
    看错了,如果是 linux 到 linux 的话整个 rootfs 搬过去就是了,重新配置下引导就好。如果你用的 kernel 够新而且没有任何外部驱动,通常不会有什么大问题。
    12101111
        25
    12101111  
       2022-04-04 14:50:52 +08:00   ❤️ 1
    我的 gentoo 安装换了好几台电脑了, 除了自己编译的内核因为驱动不一样要重配, 根文件系统使用任何保留权限位和 POSIX ALC 属性的方式复制就行
    我用的 zfs, 就直接 zfs send xxx | ssh root@yyy zfs receive xxx
    如果两台都要接着用, 建议重置 /etc/machine-id
    fox0001
        26
    fox0001  
       2022-04-04 15:09:10 +08:00 via Android
    我一般是

    1 )数据放在私有云 nextcloud ,比如手机数据备份、联系人、照片、mp3 、笔记等。自己写的烂代码之类,也自建 git 。

    2 )机器上,把自用数据跟系统分离,自用数据只放 /opt ,包括第三方软件。

    3 )需要修改系统的配置,就针对该配置做备份。
    kongkongyzt
        27
    kongkongyzt  
       2022-04-04 15:14:36 +08:00
    就直接 rsync 呗,用 zfs/btrfs 的话就更简单了,btrfs send | btrfs receive .新机器没装系统的话就直接暴力 dd 对拷
    软件本质上就是文件系统上面的文件,无非是二进制 /lib so 库 /配置文件 的集合, 你把整个系统复制过去在新系统上就能用了
    a8Fy37XzWf70G0yW
        28
    a8Fy37XzWf70G0yW  
       2022-04-04 15:38:29 +08:00 via Android
    如果兩個硬碟可以連結到一起的話,那用 dd 也可以喔。具體的方式是將兩台電腦的主硬碟連結到一起,再啟動至 U 盤隨身碟的 Live CD 。然後在終端機內輸入命令就好了。

    dd if=舊硬碟完整路徑 of=新硬碟完整路徑 conv=noerror,sync
    a8Fy37XzWf70G0yW
        29
    a8Fy37XzWf70G0yW  
       2022-04-04 15:40:54 +08:00 via Android
    優點是相當於完整復刻一台電腦。缺點是時間會有些長,而且需要雲端同步的程式此時會無法正常使用。
    findex
        30
    findex  
       2022-04-04 15:52:28 +08:00
    @chenxytw
    我用的 dd 命令。直接硬盘对拷。
    硬盘 A 对拷到硬盘 B 。硬盘 A 放着不动做备份。
    然后 B 硬盘上新机,再去修复 B 硬盘分区表( MBR/GPT 扩容或者分区)。chroot 命令,然后修复 grub 。然后修复 /etc/fstab 包括 uuid 以及重做 swap 分区。然后重新安装驱动,删掉旧版驱动。

    如果老系统是 mbr 启动换到仅仅支持 uefi 启动的电脑,对拷前先将 B 硬盘做一个 200MB 的分区 GPT ,用于给 UEFI 做启动分区。然后,对拷的时候,选择对应的单个分区 dd 。然后重建 GPT 分区。回到上面步骤继续。(做这些的时候,你需要知道你在干什么)

    比 rsync 什么之流好太多了,就是麻烦点。已经用了 7 、8 年了,基本上都属于无痛升级。以前你电脑上的开发环境,gcc ,工具链什么的都原封不动回去了。rsync 只是拷贝某些单独使用的文件,工具链啥的,编译的包,linux 共享的动态库在 rsync 后可能会无法使用。硬盘 A 、B 对拷后,再升级 B 系统一劳永逸。
    encro
        31
    encro  
       2022-04-04 16:34:27 +08:00
    linux 没有注册表。。。没有磁盘盘符。
    所以应用文件过去了,那么应用也就过去了,不存在迁移数据问题-------应用相关文件复制过去就行了。
    Jarvis666
        32
    Jarvis666  
       2022-04-04 17:09:15 +08:00
    连数据迁移都这么麻烦,干嘛还用 Linux ,直接 win 和 mac 走起
    oocococo
        33
    oocococo  
       2022-04-04 17:18:24 +08:00 via Android
    可以试试 clonezilla 这类的工具,类似 ghost
    ClericPy
        34
    ClericPy  
       2022-04-04 17:26:31 +08:00
    之前上班的时候俩磁盘一样大的迁移过 Ubuntu, 无痛直接开用, 就是得改磁盘编号. 过程就是简单的 dd+tar

    后来发现 mint 和 Ubuntu 都有自家的备份工具, 不知道靠谱不, 改 manjaro 了就没迁直接重装

    再后来坛友都说把 home 迁过去就行了, 我看了下大部分软件也确实在 home 下面, 有的放在 /opt 啥的就没办法了. 所以基本都重装, 反正基本几个配置文件拖过去就够了, 软件重新装也是一行代码

    如果有更好的方案自然最好, 主要我的 home 垃圾文件有点太多了... 懒得清理直接重来
    THESDZ
        35
    THESDZ  
       2022-04-04 17:37:31 +08:00
    给两个思路
    1.全盘同步
    2.找找有无工具获取当前安装包的安装脚本导出+同步 home 目录
    sinboy1988
        36
    sinboy1988  
       2022-04-04 18:40:09 +08:00
    我用的 dd ,比你这个场景类似,我是把一个块 SSD 切分分区以后,把原来装在 HDD 的 Arch 弄进 SSD 新分区里
    raptor
        37
    raptor  
       2022-04-04 18:56:21 +08:00
    我都是 COPY HOME ,软件当然是重装喽,换了机器顺便升级一下呗,有时连发行版都换了,不存在需要完全迁移的情况。
    yanqiyu
        38
    yanqiyu  
       2022-04-04 19:42:57 +08:00   ❤️ 2
    btrfs su sn cr /home /.snapshot/home -r
    btrfs send /.snapshot/home | pigz --best > /path/to/nas
    另一台电脑上
    cat /path/to/nas | pigz -d | btrfs receive /.snapshot
    james122333
        39
    james122333  
       2022-04-05 00:13:22 +08:00 via Android
    写配置脚本 基本上重视的资料应该独立放置
    多数杂乱资料基本上是没什么用的(限个人)
    dd 全盘太重 用脚本也不用管 cpu arch 如果很熟类 unix 这都不是问题 也有很方便管理的方式就不说了
    james122333
        40
    james122333  
       2022-04-05 00:19:47 +08:00 via Android
    回到主题来讲这类独立工具其实都是给小白用的 哪个平台都一样
    james122333
        41
    james122333  
       2022-04-05 00:28:19 +08:00 via Android
    当你找工具找到厌倦了 回头一看
    其实很多工具早就在身边
    dousha99
        42
    dousha99  
       2022-04-05 00:49:29 +08:00
    目前如果我因各种原因 wipe 了一台机器需要重新装 linux 的话是这样操作的:

    0. 重放系统安装脚本,除非要新安装特殊的东西或者目标硬件需要特殊配置
    1. 根据目标机器的用途(和硬件配置),重放软件包管理器操作;这包括从 AUR 中下载的软件
    2. 从最后一次使用的机器中对拷所有 dotfiles
    3. 如果需要,从存储服务器上拉取那些不是从包管理器里安装的软件(比如各种 flatpak, 独立二进制等)
    4. 如果需要,从各个其他机器上拉取需要的工作文件

    但是吧,从 1 到 3 中间还可能包括无数的驱动调教过程、Xorg 调教过程、根据新机器的情况调整各种 dotfile 、不能重放这个操作,因为 [磁盘空间不足, 系统架构不兼容, 不满足依赖关系]. 所以基本上就是,除非你已经调教过这个机器,不然还是要花一堆时间的。
    james122333
        43
    james122333  
       2022-04-05 01:04:15 +08:00 via Android
    @dousha99

    确实会有特殊情况 但非常少 其它系统都是如此 剩下的其实就是 dotfiles 不完备或自动化不足而已 如果有套件只有 x86 版本 那你应该绕过
    ChristianChen
        44
    ChristianChen  
       2022-04-05 13:55:09 +08:00
    我只遇到过一次,很久以前启动盘换 ssd 的时候,印象不深也没有留下笔记,可能当时觉得这事坑不多或者不会有第二次
    大概就是 u 盘启动,做好备份,对拷数据,修改更新一些分区和硬盘信息的内容,修复引导,正常启动后还有问题的地方单独解决
    flynaj
        45
    flynaj  
       2022-04-05 15:25:58 +08:00
    硬盘拆过去最简单。dd 也是一样的。
    Chip
        46
    Chip  
       2022-04-07 00:22:53 +08:00
    没有人考虑过在 Linux Mint 中内置的 Timeshift ?

    Timeshift for Linux is an application that provides functionality similar to the System Restore feature in Windows and the Time Machine tool in Mac OS. Timeshift protects your system by taking incremental snapshots of the file system at regular intervals. These snapshots can be restored at a later date to undo all changes to the system.
    libook
        47
    libook  
       2022-04-08 12:10:23 +08:00
    我曾经在台式机上,把一块装 Linux 的硬盘从 Intel Core i7 4790k 的电脑上直接拆下来装到 AMD Ryzen 7 3800X 的电脑上,可以直接用……当然也有运气的成分。

    笔记本的话比较麻烦的就是硬件相关的驱动和配置,如果不是装系统就直接能用的那种,需要你自己去调校。

    你可以把硬盘换过去试试,或者用个 live 系统把旧硬盘上的数据直接全盘 dd 到新硬盘试试。
    libregratis
        48
    libregratis  
       2022-04-18 02:48:55 +08:00
    有条件的上 NAS ,没条件的上 U 盘 /移动硬盘
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2719 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:30 · PVG 19:30 · LAX 03:30 · JFK 06:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.