Apple's Time Machine fuse read only file system
C++
Latest commit a5e201f Jun 30, 2013 @abique Merge pull request #13 from rocallahan/master
Add support for readlink and make getattr use lstat, so symbolic links are reflected correctly
Permalink
Failed to load latest commit information.
src
AUTHORS
CMakeLists.txt
ChangeLog Update ChangeLog Mar 11, 2013
LICENSE
README.markdown

README.markdown

TMFS

__/\\\\\\\\\\\\\\\___/\\\\____________/\\\\___/\\\\\\\\\\\\\\\______/\\\\\\\\\\\___
 _\///////\\\/////___\/\\\\\\________/\\\\\\__\/\\\///////////_____/\\\/////////\\\_
  _______\/\\\________\/\\\//\\\____/\\\//\\\__\/\\\_______________\//\\\______\///__
   _______\/\\\________\/\\\\///\\\/\\\/_\/\\\__\/\\\\\\\\\\\________\////\\\_________
    _______\/\\\________\/\\\__\///\\\/___\/\\\__\/\\\///////____________\////\\\______
     _______\/\\\________\/\\\____\///_____\/\\\__\/\\\______________________\////\\\___
      _______\/\\\________\/\\\_____________\/\\\__\/\\\_______________/\\\______\//\\\__
       _______\/\\\________\/\\\_____________\/\\\__\/\\\______________\///\\\\\\\\\\\/___
        _______\///_________\///______________\///___\///_________________\///////////_____

Time Machine File System is a read-only virtual filesystem which helps you to read your Apple's time machine backup.

This filesystem does not targets performances, it has been written for a friend who has lost his macbook and wants to recover its data on Linux.

It's actually not perfect, feel free to report bugs or suggestions at [https://github.com/abique/tmfs/issues][https://github.com/abique/tmfs/issues].

Enjoy!

How to use it?

First you have to mount your HFS partition, by doing something like:

mount /dev/sdXX /mnt/hfs-root

Then as root run:

tmfs /mnt/hfs-root /mnt/tm-root -ouid=$(id -u),gid=$(id -g),allow_other

Then as a normal user, go to the directory /mnt/tm-root/ and enjoy your data! :-)

Dependancies

  • c++
  • cmake >= 2.8
  • boost >= 1.42.0 (earlier versions may also work, but are untested)
  • fuse

How to build and install it?

Manually, run these commands:

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
make
DESTDIR=install-test make install

Then if the installation looks ok to you in install-test/ do make install as root with sudo make install.

Internals

Time Machine structure:

Snapshot root: ${hfs_root}/Backups.backupdb/${comp_name}/${date}/${disk_name}/

Hardlink count equals to dir_id: ${hfs_root}/Backups.backupdb/${comp_name}/${date}/${disk_name}/.../Folder

Real folder with data: ${hfs_root}/.HFS+ Private Directory Data/dir_${dir_id}/

Our representation:

/${comp_name}/${date}/${disk_name}/${Real root}