nichijou
V2EX  ›  macOS

Time Machine 的工作原理?

  •  
  •   nichijou · Aug 21, 2017 · 3972 views
    This topic created in 3277 days ago, the information mentioned may be changed or developed.

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

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

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

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

    ♥️

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

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

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

    APFS 的快照会好一些吗?
    QAPTEAWH
        14
    QAPTEAWH  
       Aug 22, 2017
    @shadownet 你把该排除的排除掉。仔细看看说明,备份是频繁的(每小时),但留下来的不算频繁( 24 小时内的每小时,一个月内的每天,一个月前只是每周)。
    nichijou
        15
    nichijou  
    OP
       Aug 22, 2017
    @QAPTEAWH
    哦,所以这就是 tm 备份盘必须是 hfs+格式的原因
    nichijou
        16
    nichijou  
    OP
       Aug 22, 2017
    @chztv
    其他包括系统部分我全部手动 exclude 了,我有一种系统 pure 的强迫症,哪天系统挂了希望软件全部重新部署,当然必要的配置文件全都在 dropbox 里面
    QAPTEAWH
        17
    QAPTEAWH  
       Aug 22, 2017   ❤️ 1
    @nichijou EXFAT + disk image 也行。disk image 里面是个 HFS+文件系统。
    ItzhacLea
        18
    ItzhacLea  
       Aug 24, 2017
    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  
       Aug 24, 2017
    回到你的問題:

    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
       Aug 24, 2017
    @ItzhacLea 哈 感谢你全面细致的回答
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4535 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 91ms · UTC 10:00 · PVG 18:00 · LAX 03:00 · JFK 06:00
    ♥ Do have faith in what you're doing.