Hacker News new | ask | show | jobs
by onedognight 4757 days ago
> Time Machine, only works over a LAN with destinations that support AFP. This is at least in part because of Time Machine's reliance on Unix hard links, and also in part because it has to be able to ensure that any OS X files with HFS+ specific metadata are correctly preserved.

This is not the reason. Time Machine does support hard links, legacy Mac metadata, and other Unix features. It does this by writing all the data into large blobs (a sparse bundle) with an embedded filesystem of its choosing (i.e. HFS+). It can use any destination filesystem for the blobs, including FAT.

3 comments

In particular, Time Machine makes large use of hard links to directories, which not many filesystems support. With HFS+ Apple can be sure that support is always there.
Actually I think you'll find it makes use of hard links to files. Its basically a reimplementation of rdiff-backup, or it might be the other way round. I can assure you that no directories get hard linked, and I'm sure someone will furnish the obligatory xkcd.

Edit -- I stand corrected! It does in fact link folders as well. Also: http://xkcd.com/981/

It hard-links directories, which is non-standard but supported by HFS+. It's kind of crazy to do in general, but in this specific use case it's a great idea.
Agreed - having read up a bit on how it works I have to say that its a pretty neat trick.
I even remember using Time Machine with an SMB share in Tiger. You just had to enable a configuration option to make it work. Did later versions of OS X break that functionality?
You still can, but there are a few more workarounds you have to do now. You have to manually create the sparsebundle AND change configuration options.
by "large blobs" you mean sparsebundles, right? Sparsebundles (as opposed to diskimages) can be diff'd allowing Time Machine to not only treat them as an HFS capable FS, but to isolate changes to a single block, reducing network traffic and time to backup.
Sparsebundles aren't diffed in Time Machine (what would they diff against?); and backups are only done in whole-file increments, not at a block level.
>backups are only done in whole-file increments, not at a block level

OP seems to refer to how the Time Machine destination backup file is chunked when using a sparsebundle, such that individual chunks can be updated in isolation, which is how Time Machine came to support network backups. Previously, Time Machine's destination file was a monolithic disk image that had to be updated in whole, which would be unrealistic for network backups.

At a filesystem level, a sparsebundle is just a directory and the chunks are individual data files, which the OS coalesces into a single logical file. Sparsebundles appear as individual "files" in the Finder but you can right click to see the individual chunk files. A sparsebundle is effectively a "blob" as GP states, since it is designed to contain arbitrary data, and since it's implemented with the most rudimentary filesystem components it works across platforms as GP also states.

But when discussing network transfers it makes sense to think if it as a simple collection files rather than a "blob." (OP describes the chunks as "blocks" but that implies hard drive blocks which is not the case.)

Sparse Bundles were always chunked (and introduced at the same time as TimeMachine). Sparse Images were single file, but could grow to accommodate additional data. IIRC, networked TimeMachine backups (say, to a TimeCapsule) always have used sparse bundles.