V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
289396212
V2EX  ›  程序员

把 git 作为电脑系统备份的一个方案?

  •  
  •   289396212 · 2023-06-14 10:59:38 +08:00 · 6223 次点击
    这是一个创建于 526 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假设有系统备份的需求,大家有没有想过,无论 win/mac/linux 系统的电脑,在根目录下 git init ,把整个磁盘作为一个 repo ,可以写个脚本每天自动 git commit,然后 push ,备份系统
    61 条回复    2023-06-15 13:54:42 +08:00
    nicreve
        1
    nicreve  
       2023-06-14 11:04:10 +08:00
    就算用 Git LFS ,空间占用和性能估计也很差。
    zgqq
        2
    zgqq  
       2023-06-14 11:06:00 +08:00
    快照应该比你这种方式好 10 倍吧
    crayygy
        3
    crayygy  
       2023-06-14 11:10:31 +08:00
    可以试试看,不需要用 root folder 测试,找一个有大量小文件并且会经常有 change 的目录,然后就知道 git 不是用来干这个事情的了。
    kaiger
        4
    kaiger  
       2023-06-14 11:11:02 +08:00   ❤️ 1
    git 备份一些配置文件是极好的

    git --work-tree=$HOME --git-dir=$HOME/.dotfiles.git
    aptupdate
        5
    aptupdate  
       2023-06-14 11:14:23 +08:00
    理论上应该可以,不过得考虑到空间占用和性能问题。。。
    但是为啥要用 git 呢,传到 GitHub 上?
    备份系统有更好的方案,哪怕是把备份出来的快照传到 git 上。
    cheng6563
        6
    cheng6563  
       2023-06-14 11:21:48 +08:00
    不如 svn
    xiangyuecn
        7
    xiangyuecn  
       2023-06-14 11:22:28 +08:00
    你猜会不会有奇怪的目录 和 文件
    deplivesb
        8
    deplivesb  
       2023-06-14 11:24:11 +08:00
    git 对大量的小文件的性能是很差的
    realpg
        9
    realpg  
       2023-06-14 11:31:39 +08:00
    我这有 80 块 18T 硬盘 你要不要买点?估计一年就差不多了
    HannibaI
        10
    HannibaI  
       2023-06-14 11:35:07 +08:00
    XY
    yinmin
        11
    yinmin  
       2023-06-14 12:11:36 +08:00
    windows 最简单的备份是用“文件历史记录”,Mac 最简单的备份是用“时间机器”,可以配置成每小时差异备份一次,将文件备份给另外一台机器的共享目录上。
    LindsayZhou
        12
    LindsayZhou  
       2023-06-14 12:17:38 +08:00
    我 pull 过 linux kernel 的代码,也自己做过它的镜像,从这个经验来说,绝对不值得。

    要实现类似的增量备份和回滚,推荐 restic
    TsubasaHanekaw
        13
    TsubasaHanekaw  
       2023-06-14 12:20:53 +08:00
    ntfs 系统有卷影备份.
    yrj
        14
    yrj  
       2023-06-14 12:22:07 +08:00
    上次看到个帖子,和你一样的想法
    zengxs
        15
    zengxs  
       2023-06-14 12:22:59 +08:00   ❤️ 4
    git 会把你的文件的每一个版本都保留在他的库里,已有的文件也会在库里保留一份副本,你这么搞过几天你磁盘就爆了(说不定不用几天,你磁盘占用已经超过一半的话,第一次执行 git add 的时候就爆了
    colodes
        16
    colodes  
       2023-06-14 12:24:20 +08:00 via Android
    ostree 、不可变发行版了解一下
    duke807
        17
    duke807  
       2023-06-14 12:27:35 +08:00 via Android
    我朋友一直用 git 备份 gentoo 系统的 /etc 目录
    Leon6868
        18
    Leon6868  
       2023-06-14 12:29:16 +08:00
    @realpg 多少钱一块
    yolee599
        19
    yolee599  
       2023-06-14 12:53:15 +08:00 via Android
    git 对二进制文件好像是完整拷贝保存的?改动一个字节就得复制一份,这就需要很大的磁盘空间了,电脑备份这种场景要差分保存才合理
    0o0O0o0O0o
        20
    0o0O0o0O0o  
       2023-06-14 12:56:41 +08:00 via iPhone
    Linux 很多用 git 管理 dotfiles 的

    borgbackup 的逻辑也很像 git
    superchijinpeng
        21
    superchijinpeng  
       2023-06-14 13:00:47 +08:00
    你有多大的磁盘?备份 / 感觉几十 T 也不够
    1145148964
        22
    1145148964  
       2023-06-14 13:03:01 +08:00
    git 在图像和文档这种上性能很差。
    mingwiki
        23
    mingwiki  
       2023-06-14 13:03:13 +08:00
    git 冗余太可怕了,也就管理代码之类的文本文件还可以。系统里那么多媒体资源和二进制文件,理论上不能可能用 git ,究极拉跨。搞个 raid 或者 rsync 定期备份,不比 git 好一万倍。
    PhosphorLin
        24
    PhosphorLin  
       2023-06-14 13:10:32 +08:00
    ostree 了解一下
    BeautifulSoap
        25
    BeautifulSoap  
       2023-06-14 13:24:04 +08:00 via Android
    lz 你应该实际尝试下用 git 管理一个软件版本(比如浏览器,qq 或者游戏之类的)
    然后你就会发现这个想法有多不切实际
    RoccoShi
        26
    RoccoShi  
       2023-06-14 13:24:57 +08:00 via Android
    建议你先看看 .git 这个文件夹有多大吧
    tomyail
        27
    tomyail  
       2023-06-14 13:25:01 +08:00   ❤️ 1
    git-annex
    xiangbohua
        28
    xiangbohua  
       2023-06-14 13:36:47 +08:00
    理论上可行,但是实际上感觉不太行,大文件的处理效率不高,现在动不动就按 T 计算的这个空间,真不知道提交一次得多久。
    totoro625
        29
    totoro625  
       2023-06-14 13:56:16 +08:00
    试试 Restic: https://github.com/restic/restic 全平台通用
    1.备份库是 repo 形式
    2.可以指定任意文件夹
    3.可以过滤文件夹
    4.可以通过脚本自动备份
    5.可以 push 到远程服务器
    6.自带去重,压缩存储
    flexbug
        30
    flexbug  
       2023-06-14 13:58:40 +08:00 via iPhone
    请使用专业备份 Acronis True Image
    lerry
        31
    lerry  
       2023-06-14 14:01:52 +08:00 via iPhone
    clone 过上 g 的代码库,贼慢,不仅仅是网络问题
    dif
        32
    dif  
       2023-06-14 14:11:42 +08:00
    只会同步重要的东西,一般都不会太大。文字形式的记录到笔记,小文件形式的用 dropbox 或者 onedrive ,大文件上传百度云,愿意花点存储费用的可以考虑对象存储,其实一年不到 100 块。
    libook
        33
    libook  
       2023-06-14 17:21:20 +08:00
    快照更好用,毕竟是专门用来干备份的。
    从 git 的原理来说,遇到二进制文件就比较浪费资源。
    不过我用过 git 管理过一些游戏存档的版本,随时 checkout 到各个提交的节点还比较方便。
    bjzhush
        34
    bjzhush  
       2023-06-14 17:23:37 +08:00
    双倍存储的代价
    dnsaq
        35
    dnsaq  
       2023-06-14 17:27:07 +08:00 via iPhone
    大文件得 Git LFS ,原理是这么个原理,应该有专注于这方面的软件,咱也没用过,比如 nextcloud 这类也是有版本管理的。
    Ib3b
        36
    Ib3b  
       2023-06-14 17:28:08 +08:00
    git 是针对文本文件的版本管理,二进制内容不行的
    mww
        37
    mww  
       2023-06-14 17:35:35 +08:00
    mac 时间机器🐶
    lynan
        38
    lynan  
       2023-06-14 17:40:27 +08:00
    我个人的感觉是备份软件数据(并且可以在恢复后正常接续)才合理。
    zedpass
        39
    zedpass  
       2023-06-14 18:03:15 +08:00
    你不考虑效率、成本问题吗。。。对于数据备份需求,有 N 多更专业的方式,使用 win/mac 自带的系统备份、使用 RAID 、买一个 NAS 备份、虚拟机打快照、使用 btrfs 文件系统,每一种都比用 git 备份更加高效和可靠
    DiePro
        40
    DiePro  
       2023-06-14 18:10:19 +08:00
    以前听说美国工程师电脑被抢了,换台电脑登录 Onedrive 就可以继续了,完全不用担心文件丢失,不知真假
    chiu
        41
    chiu  
       2023-06-14 19:23:48 +08:00 via iPhone
    我 dotfile 就是这么备份的
    GeruzoniAnsasu
        42
    GeruzoniAnsasu  
       2023-06-14 19:27:56 +08:00
    不可行。

    我接手过一个嵌入式项目,2.6 内核,一整套源码都放进 git 里统一管理,一套源码几个 g 大。

    git status

    卡几十秒


    FYI
    mmdsun
        43
    mmdsun  
       2023-06-14 21:59:00 +08:00
    我说,有没有可能是 Windows 自带 “git”呢?

    管理员权限:
    #相当于 git init :
    Enable-ComputerRestore -drive "c:\"

    #相当于 git commit
    Checkpoint-Computer -description "first commit" -restorepointtype "MODIFY_SETTINGS"

    # 相当于 git log 历史记录
    Get-ComputerRestorePoint
    flyqie
        44
    flyqie  
       2023-06-14 22:02:51 +08:00
    思路可以,但 git 不行。。
    Easedge
        45
    Easedge  
       2023-06-14 22:05:07 +08:00
    nixos 完美符合 git 要求
    ltkun
        46
    ltkun  
       2023-06-14 22:52:55 +08:00 via Android
    @DiePro 不用听说 这个中国也行 电脑就是个终端 任何文件都存在远程
    MoeMoesakura
        47
    MoeMoesakura  
       2023-06-14 23:07:19 +08:00
    git 我曾经对着一个数千文档的目录试过,卡了数分钟。。。

    所以考虑 rsync ,或者让 tar 回归其初心( Tape Archiver )
    gransh
        48
    gransh  
       2023-06-14 23:08:41 +08:00
    windows 有个功能叫系统保护,可以创建还原点
    chesha1
        49
    chesha1  
       2023-06-14 23:35:35 +08:00
    git 的性能又不好,那你不如用一个公网网盘开自动备份,容量又大速度又快

    我自己就是这么做的,不过没有把根目录全部备份,只有自己的工作文件夹备份了,onedrive 的速度很快,能有 100MB/s ,而且在 Windows 下面直接直接无感当成本地目录用
    hxy100
        50
    hxy100  
       2023-06-14 23:50:41 +08:00
    git 是专为纯文本文件的版本历史记录而设计的,面对二进制文件,他虽然勉强能用,但是很坑,弊大于利
    xylxAdai
        51
    xylxAdai  
       2023-06-15 00:40:51 +08:00
    每天备份的意义在哪儿?而且了解一下 git 原理的都说不出这种话。。
    leokun
        52
    leokun  
       2023-06-15 00:53:16 +08:00
    我玩 GTA5 mod 的时候试过这方法,非常慢,而且占用空间非常大
    tin3w5
        53
    tin3w5  
       2023-06-15 01:01:36 +08:00 via iPhone
    @DiePro 是的,之前的公司都有搞过。文件可能不是最新的,但是一周之内的内容肯定是会备份到 onedrive 的。
    而且文档要么在 Google doc/Sharepoint 上,要么在 confluence 上,代码都在 git 里,各种账单、财务、流程……都在公司内部服务器上,几乎除了一些个性化配置,大多数数据也不会存在公司电脑上。
    tril
        54
    tril  
       2023-06-15 03:13:21 +08:00
    这种备份需求有现成的解决方案,比如群晖的 active backup for business 。你要是喜欢每小时备份都行,反正是增量备份,还带版本控制。
    moonjourney
        55
    moonjourney  
       2023-06-15 09:05:58 +08:00
    nixos 系统文件都被 git 管理,纯文本不到 1M
    lucifer9
        56
    lucifer9  
       2023-06-15 09:39:37 +08:00
    配置文件可以考虑用 gnu stow + git
    其他大的二进制文件还是算了吧
    wccc
        57
    wccc  
       2023-06-15 09:44:59 +08:00
    linux desktop Btrfs Timeshift
    lvlvforever
        58
    lvlvforever  
       2023-06-15 09:49:45 +08:00
    范围缩小点。
    我用云服务器+git 脚本来备份自己的 doc 文件,实现随时随地访问。
    有 windows 、linux 、mac 上的脚本,后续计划写一个应用程序。
    限制是主要是文档类的,音视频的老老实实用各种云盘备份。
    deorth
        59
    deorth  
       2023-06-15 09:57:56 +08:00 via Android
    您是不是在找:文件系统快照
    DiePro
        60
    DiePro  
       2023-06-15 10:00:26 +08:00
    @ltkun 太久了,都忘了自己电脑有 onedrive ,以前设置不启动的
    昨天回复完帖子就去打开 onedrive ,文件全自动同步了,公司的电脑。。。
    coolfan
        61
    coolfan  
       2023-06-15 13:54:42 +08:00
    🤣换成 btrfs 文件系统,可以每小时打一次快照,很低的额外存储占用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3070 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 13:38 · PVG 21:38 · LAX 05:38 · JFK 08:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.