把 git 作为电脑系统备份的一个方案? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
289396212
V2EX    程序员

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

  •  
  •   289396212 2023-06-14 10:59:38 +08:00 6885 次点击
    这是一个创建于 854 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假设有系统备份的需求,大家有没有想过,无论 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  
    PRO
       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 )
    iixy
        48
    iixy  
       2023-06-14 23:08:41 +08:00
    windows 有个功能叫系统保护,可以创建还原点
    FlashEcho
        49
    FlashEcho  
       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
    其他大的二进制文件还是算了吧
    fkmc
        57
    fkmc  
       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     Solana     5798 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 03:08 PVG 11:08 LAX 20:08 JFK 23:08
    Do have faith in what you're doing.
    ubao 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