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

Time Machine 的工作原理?

  •  
  •   nichijou · 2017-08-21 19:12:17 +08:00 · 3336 次点击
    这是一个创建于 2680 天前的主题,其中的信息可能已经有所发展或是发生改变。

    是不是每次备份只是创建一个快照,需要备份的全复制一遍呀,没有增量备份之类的功能?

    看 Backups.backupdb 文件夹下就是备份日期作文件名的文件夹,每个体积都差不多

    所以我需求基本上就是备份我的 Documents 等几个资料文件夹,所以还不如我直接拷贝了?更加安全可靠。

    不过 time machine 备份是我点击任务栏看它显示正在备份的体积才不到两个 g,远远小于他要备份的体积,但速度又不像仅在做两个 g 的拷贝,所以它底层在做什么动作,和我自己手动备份有什么优势咩?

    ♥️

    20 条回复    2017-08-24 15:15:19 +08:00
    Wao
        1
    Wao  
       2017-08-21 19:24:16 +08:00
    nichijou
        2
    nichijou  
    OP
       2017-08-21 19:27:18 +08:00
    @Wao 他讲是增量备份 可我查看每次备份(Backups.backupdb 文件夹下就是备份日期作文件名的文件夹)体积都像是在做全拷贝,体积感人
    lengjian
        3
    lengjian  
       2017-08-21 19:38:27 +08:00 via iPhone
    硬链接
    chinvo
        4
    chinvo  
       2017-08-21 19:38:54 +08:00
    增量和 hard link
    nichijou
        5
    nichijou  
    OP
       2017-08-21 19:41:22 +08:00
    @lengjian
    @chinvo
    哦哦,每次备份是对照前一次备份,我有手动删过以前的备份是不是药丸啊
    chinvo
        6
    chinvo  
       2017-08-21 19:42:34 +08:00
    @nichijou 不会,会在后面增量的时候补全。

    当然之前的版本就没了
    chinvo
        7
    chinvo  
       2017-08-21 19:43:13 +08:00
    TM 的一个主要功能就是同一文件的不同历史时期版本的恢复
    nichijou
        8
    nichijou  
    OP
       2017-08-21 19:43:36 +08:00
    @lengjian
    @chinvo
    没弄过硬链接,不过应该和以前的备份没关了了吧,只是类似磁盘上文件有多个指针指向,删除以前的指针并不会影响现在的,我理解对么?
    lightening
        9
    lightening  
       2017-08-21 19:48:44 +08:00   ❤️ 1
    @nichijou 可以理解为指针,两个指针指向一个磁盘区块。删除操作就是移除指针。当区块没有指针指向就会被垃圾回收掉。
    nichijou
        10
    nichijou  
    OP
       2017-08-21 19:54:06 +08:00
    @chinvo
    @lightening
    阿里嘎多
    chztv
        11
    chztv  
       2017-08-22 11:29:29 +08:00
    如果仅仅备份 Documents 等几个资料文件夹,可以用 iCloud 或者 Google Backup,或者 Dropbox。
    TM 的备份不仅仅是资料文件,是备份的整个 Mac 环境,哪天硬盘挂了,TM 会让你感觉到原来硬盘没坏过。
    以上是我亲身感受,所以 TM 备份很重要。不用每天,至少每周备份下。
    QAPTEAWH
        12
    QAPTEAWH  
       2017-08-22 14:08:17 +08:00
    HFS+ 有个神奇的 directory hard link 机制。

    不过俱往矣,APFS 直接快照就行了( SSD 当备份盘的话...)。
    shadownet
        13
    shadownet  
       2017-08-22 15:01:47 +08:00
    @QAPTEAWH 我直接被 TM 的超频繁备份搞懵了,500G 的 ssd,不到 4 天就满

    APFS 的快照会好一些吗?
    QAPTEAWH
        14
    QAPTEAWH  
       2017-08-22 15:20:32 +08:00
    @shadownet 你把该排除的排除掉。仔细看看说明,备份是频繁的(每小时),但留下来的不算频繁( 24 小时内的每小时,一个月内的每天,一个月前只是每周)。
    nichijou
        15
    nichijou  
    OP
       2017-08-22 15:23:54 +08:00
    @QAPTEAWH
    哦,所以这就是 tm 备份盘必须是 hfs+格式的原因
    nichijou
        16
    nichijou  
    OP
       2017-08-22 15:27:17 +08:00
    @chztv
    其他包括系统部分我全部手动 exclude 了,我有一种系统 pure 的强迫症,哪天系统挂了希望软件全部重新部署,当然必要的配置文件全都在 dropbox 里面
    QAPTEAWH
        17
    QAPTEAWH  
       2017-08-22 15:29:02 +08:00   ❤️ 1
    @nichijou EXFAT + disk image 也行。disk image 里面是个 HFS+文件系统。
    ItzhacLea
        18
    ItzhacLea  
       2017-08-24 02:13:27 +08:00
    Time Machine 的實現依賴於 HFS+ 的 directory hard links,而 HFS+ 實現 directory hard links 是一個骯髒的 trick。

    其他現代文件系統 (NTFS, EXT4, APFS...etc) 把 hard link 看作是同一個 inode 的不同文件名,但是 HFS+ 不是這麼做的。

    如果你在其他系統下觀察 Time Machine 的目錄,你會發現大多數文件都不存放在 /Backups.backupdb 下,而是在 「.HFS+ Private Directory Data 」 文件夾下。這個文件夾在 macOS 下即使是 root 也是不可見的。

    「.HFS+ Private Directory Data 」 文件夾就是 HFS+ 實現 directory hard links 的 trick。當一個文件 /文件夾被硬連結 (ln) 的時候,系統首先會把它挪入到這個文件夾中,並以 CNIDs 重命名;然後在原有位置建立一個 link,指向該文件 /文件夾。

    這麼做的弊端非常明顯:一旦「.HFS+ Private Directory Data 」損壞,整個分區上的“硬連結”都會受到影響,不得不說這種設計十分可笑。

    ItzhacLea
        19
    ItzhacLea  
       2017-08-24 02:52:11 +08:00
    回到你的問題:

    1. “是不是每次备份只是创建一个快照”
    不是。但因為 HFS+ 實現硬連結的奇葩方式,導致整個備份過程看起來非常地繁瑣:
    a. 在 /Backups.backupdb 下建立新的文件夾,將新(發生了改動)的文件複製進去;
    b. 對自上一次備份後沒有發生改變的文件有兩種處理方式:如果在 /Backups.backupdb 下就硬連結,從 /Backups.backupdb 挪到「.HFS+ Private Directory Data 」文件夾;如果已經被硬連結,也就是文件已經在「.HFS+ Private Directory Data 」文件夾內,就原地建立一個 link,指向相應的文件;
    c. 修改 “ Latest ”,使其指向最新的備份文件夾,完成備份。

    2. “没有增量备份之类的功能?”
    有,因為是“硬連結”,所以不能從文件大小上判斷。

    3. “所以我需求基本上就是备份我的 Documents 等几个资料文件夹,所以还不如我直接拷贝了?更加安全可靠。”
    是。Time Machine 優勢在於全盤備份,但是基於 HFS+,需要靠自己對蘋果的信仰戰勝 HFS+ 的不穩定。


    PS. 由於 HFS+ 特立獨行地處理 hard link,這裡的文件=文件夾。
    nichijou
        20
    nichijou  
    OP
       2017-08-24 15:15:19 +08:00
    @ItzhacLea 哈 感谢你全面细致的回答
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5421 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:37 · PVG 15:37 · LAX 23:37 · JFK 02:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.