V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dfc643
V2EX  ›  问与答

Linux 在线系统完整备份方案?

  •  
  •   dfc643 · 2020-12-30 03:15:12 +08:00 · 3023 次点击
    这是一个创建于 1210 天前的主题,其中的信息可能已经有所发展或是发生改变。

    场景

    • 通过 XRDP 远程登录目标计算机执行备份任务
    • 要求备份系统时,当前系统不能断开、关机、重启
    • 要求备份时支持压缩级别
    • 备份完成后通过 SFTP + FreeFileSync 远程传输到近端计算机
    • 远端计算机是 ext4 分区格式不支持快照

    Windows ?

    Windows 中是有这种操作的,得力于卷影服务和 DISM 磁盘镜像,可以在线备份当前系统并生成 wim 或者 esd 镜像文件。

    为什么需要?

    防止 SSD 某一天暴毙。

    找过哪些?

    • backintime
    • timeshift
    • cherry backup
    • deepin clone

    找到了半夜三点多,实在找不到了,在线求解惑 ……
    是不是我的需求比较少见?

    23 条回复    2021-01-03 18:41:49 +08:00
    xupefei
        1
    xupefei  
       2020-12-30 03:20:50 +08:00 via iPhone   ❤️ 1
    ext4 外面套一个 lvm,然后用 lvm snapshot ?
    reus
        2
    reus  
       2020-12-30 05:56:41 +08:00 via Android   ❤️ 2
    zfs send
    btrfs send
    ext4 洗洗睡吧
    msg7086
        3
    msg7086  
       2020-12-30 05:57:35 +08:00 via Android
    我司快照 Windows 用的是卷影,快照 linux 因为没找到办法所以没做……
    cheng6563
        4
    cheng6563  
       2020-12-30 08:16:09 +08:00 via Android   ❤️ 1
    @msg7086 Linux 要么 zfs 这种原生支持,要么套个 lvm
    loading
        5
    loading  
       2020-12-30 08:22:49 +08:00 via Android   ❤️ 1
    实在不行 tar 打包一份,gentoo 古老技术。
    msg7086
        6
    msg7086  
       2020-12-30 09:08:39 +08:00   ❤️ 3
    @cheng6563 @loading 卷影有一个很重要的功能是创建一致的快照,也就是数据库之类的会暂停写入然后临时进入一个 snapshot safe 的状态,然后底层再快照。如果只是 tar 或者 lvm snapshot 的话,最终拿到的文件可能是 inconsistent 的。
    loading
        7
    loading  
       2020-12-30 09:24:59 +08:00 via Android
    @msg7086 卷影就能把数据库热备下来?我感觉有点不可信。
    dfc643
        8
    dfc643  
    OP
       2020-12-30 10:58:33 +08:00 via Android
    @xupefei @msg7086 @reus @loading 感谢建议,实在不行就只能想办法转 btrfs 可能会好点
    dfc643
        9
    dfc643  
    OP
       2020-12-30 10:59:49 +08:00 via Android
    @msg7086 卷影用了好几年都很靠谱,不知道是怎么工作的。每次卷影的时候都有文件写入,恢复的时候文件完整性正常
    msg7086
        10
    msg7086  
       2020-12-30 11:08:52 +08:00
    @loading @dfc643
    https://docs.microsoft.com/zh-cn/windows-server/storage/file-server/volume-shadow-copy-service
    里面的 VSS Writer 部分。
    这个是需要多个组件协作完成的。
    巨硬自家实现得最好,其他家的有没有实现就要看脸了。
    cheng6563
        11
    cheng6563  
       2020-12-30 11:41:48 +08:00
    @msg7086 lvm 快照是一致性的
    https://tldp.org/HOWTO/LVM-HOWTO/snapshotintro.html


    @loading 卷影可以热备,但还原时对于数据库来说相当于一次强行关机,需要回滚事务修复数据等操作,各个数据库的解决方案不同。
    cheng6563
        12
    cheng6563  
       2020-12-30 11:42:37 +08:00
    @dfc643 btrfs 稳定性问题很大,慎用。
    dfc643
        13
    dfc643  
    OP
       2020-12-30 11:44:58 +08:00
    @cheng6563 谢谢提醒,我试试套个 lvm
    dfc643
        14
    dfc643  
    OP
       2020-12-30 11:46:41 +08:00
    顺带发现一个事情,我的系统是 UOS v20,自带 AB 分区结构
    系统设置中执行系统更新时 ```相当于 apt upgrade``` 会自动将当前系统备份到 ```RootB 分区```

    好奇用 ps 看了一下命令,居然是用的 rsync
    ```
    root 10253 4508 32 11:36 ? 00:00:01 rsync -x -a --delete-after --exclude-from=/tmp/deepin-recovery-136327457 / /deepin-ab-recovery-backup/
    root 10254 10253 12 11:36 ? 00:00:00 rsync -x -a --delete-after --exclude-from=/tmp/deepin-recovery-136327457 / /deepin-ab-recovery-backup/
    root 10280 10254 0 11:36 ? 00:00:00 rsync -x -a --delete-after --exclude-from=/tmp/deepin-recovery-136327457 / /deepin-ab-recovery-backup/
    ```
    greenskinmonster
        15
    greenskinmonster  
       2020-12-30 11:51:10 +08:00   ❤️ 1
    如果不是要求强一致性的话,restic.net 还不错
    jworg
        16
    jworg  
       2020-12-30 11:51:27 +08:00
    loading
        17
    loading  
       2020-12-30 12:34:32 +08:00 via Android
    @cheng6563 知道了,我以为还有什么黑科技能这样把数据库的内存也给整下来。
    dfc643
        18
    dfc643  
    OP
       2020-12-30 19:46:42 +08:00   ❤️ 2
    @xupefei @msg7086 @reus @loading @cheng6563
    发现一个 DKMS 模块,快级 COW,自称对标微软的 VSS
    不知道具体怎么样,打算安装试试 https://github.com/datto/dattobd
    loading
        19
    loading  
       2020-12-30 19:50:09 +08:00 via Android
    @dfc643 论坛就需要你这样的楼主,有反馈有感谢。👍
    Leone27
        20
    Leone27  
       2020-12-30 20:06:33 +08:00
    btrfs + snapper 非常好用
    dfc643
        21
    dfc643  
    OP
       2020-12-31 01:04:07 +08:00   ❤️ 1
    @xupefei @msg7086 @reus @loading @cheng6563
    顺手造了个轮子: https://gitlab.com/dfc643/datto-backup/
    预览图: https://gitlab.com/dfc643/datto-backup/-/raw/master/sample.gif
    我自己测试了几遍没有问题,有 bug 可以反馈,有空可以修

    @Leone27 btrfs 很多地方都说不稳定,暂时不敢用。
    xupefei
        22
    xupefei  
       2021-01-01 22:46:31 +08:00
    @dfc643 谢谢!我也给我的 NUC 弄了一个,自动传到 B2
    dfc643
        23
    dfc643  
    OP
       2021-01-03 18:41:49 +08:00
    @xupefei 今天把代码更新了,可以试试 git pull 一下,修复了一些问题,添加了 i18n 支持,dattobd 对 5.8 以上内核可能有兼容性问题,5.8 以下没问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4381 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 05:33 · PVG 13:33 · LAX 22:33 · JFK 01:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.