Linux peut-il monter un répertoire d'image disque de bundle Time Machine normal?


30

Je cherche à voir si Linux peut monter et lire les fichiers stockés nativement sur une Time Capsule sur un partage réseau. Comme cette question , je suis à la recherche de quelque chose qui reproduit au moins la fonction en lecture seule de hdiutil pour attacher puis monter un bundle clairsemé d'images de disque.

Le montage SMB est facile car la Time Capsule partage à la fois avec AFP et SMB , mais je ne suis pas sûr que le paquet de disques épars puisse être monté en tant que répertoire HFS + reconstitué.

Points bonus pour une commande ou un pointeur de montage fonctionnel vers le package approprié qui analyse ce format DMG.

Au cas où ce ne serait pas clair - c'est à quoi ressemblent les fichiers de bande lorsqu'ils sont montés à partir d'un Mac dans Terminal et ce que j'attends de Linux sans la possibilité de monter le système de fichiers réel qui est encodé dans une multitude de fichiers de bandes binaires.

host:iMac.sparsebundle mike$ ls -la
total 24
drwxrwxrwx@     7 mike  staff      264 Jul  5 10:01 .
drwx------      6 mike  staff      264 Mar 26 13:11 ..
-rwxrwxrwx      1 mike  staff      499 Feb 24 15:33 Info.bckup
-rwxrwxrwx      1 mike  staff      499 Feb 24 15:33 Info.plist
drwxrwxrwx  31101 mike  staff  1057390 Jun 17 20:19 bands
-rwxrwxrwx      1 mike  staff      532 Jun 24 22:06 com.apple.TimeMachine.MachineID.plist
-rwxrwxrwx      1 mike  staff        0 Feb 24 15:33 token
host:iMac.sparsebundle mike$ ls -la bands | head -10
total 1582092552
-rwxrwxrwx  1 mike  staff  8388608 Jul  5 08:33 0
-rwxrwxrwx  1 mike  staff  8388608 May 31 13:02 1
-rwxrwxrwx  1 mike  staff  8388608 Jun 24 22:16 10
-rwxrwxrwx  1 mike  staff  8388608 Mar 19 17:15 1000
-rwxrwxrwx  1 mike  staff  8388608 May 31 00:50 10000
-rwxrwxrwx  1 mike  staff  8388608 May 31 00:50 10001
-rwxrwxrwx  1 mike  staff  8388608 May 31 00:50 10002
-rwxrwxrwx  1 mike  staff  8388608 May 31 00:50 10003
-rwxrwxrwx  1 mike  staff  8388608 May 31 00:50 10004
host:iMac.sparsebundle mike$ ls -la bands | tail -10
-rwxrwxrwx  1 mike  staff  8388608 May 31 00:51 fff6
-rwxrwxrwx  1 mike  staff  8388608 May 31 00:51 fff7
-rwxrwxrwx  1 mike  staff  8388608 May 31 00:51 fff8
-rwxrwxrwx  1 mike  staff  8388608 May 31 00:51 fff9
-rwxrwxrwx  1 mike  staff  8388608 May 31 00:51 fffa
-rwxrwxrwx  1 mike  staff  8388608 May 31 00:50 fffb
-rwxrwxrwx  1 mike  staff  8388608 May 31 00:50 fffc
-rwxrwxrwx  1 mike  staff  8388608 May 31 00:50 fffd
-rwxrwxrwx  1 mike  staff  8388608 May 31 00:50 fffe
-rwxrwxrwx  1 mike  staff  8388608 May 31 00:50 ffff
host:~ mike$ ls -la bands|wc -l
   96636

Pourquoi avez-vous besoin de "monter" le kit de connexion? Linux devrait le voir comme un répertoire, juste cddedans une fois que le volume sur lequel vos sauvegardes Time Machine sont stockées est monté sur Linux.
Ian C.

Merci Ian C - J'ai édité la question pour clarifier ce que je recherche - les données brutes sont toutes là, juste pas stockées dans un format plus lisible qui est le plus utile pour lire un fichier spécifique à partir d'un moment précis.
bmike

Réponses:


32

Vous pouvez utiliser une combinaison des deux:

Système de fichiers FUSE pour la lecture des images de disque de bundle clairsemé Mac OS

Fusible Time Machine d'Apple, système de fichiers en lecture seule

Le premier prend en charge le format .sparsebundle, le présentant comme un fichier dmg, qui peut ensuite être monté comme d'habitude. Le second prend en charge les liens physiques d'annuaire utilisés par Time Machine.


Ce devrait être la réponse acceptée. tmfsa parfaitement fonctionné pour moi sur Debian 7.0.
Gordon Bailey

Je remercie @GordonBailey de m'avoir cinglé - j'ai raté la notification qu'une autre réponse a été fournie.
bmike

Je ne pouvais pas monter le dmg hors de la boîte, j'ai donc dû également utiliser darling-dmg qui l'a monté via FUSE.
Praxeolitic

4

Il s'agit d'une extension de la réponse de @ TorArneVestbø.

Une fois que vous avez installé https://github.com/torarnv/sparsebundlefs et https://github.com/abique/tmfs, vous devez exécuter le script suivant dans Bash. Assurez-vous de mettre à jour les deux variables au début pour qu'elles soient la source et la destination.

SB="/path/to/your/Backup.sparsebundle"
TM_MNT="/path/to/where/to/mount"

# Make directories
mkdir -p "$TM_MNT"
SB_MNT=`mktemp --tmpdir -d sparsebundle_mnt.XXX`
SB_DMG="$SB_MNT/sparsebundle.dmg"
HFS_MNT=`mktemp --tmpdir -d hfsx_mnt.XXX`

# Mount the sparse bundle
sudo `which sparsebundlefs` "$SB" "$SB_MNT"

# Mount the HFS+ partition
OFF=`sudo parted "$SB_DMG" unit B print | tr 'B' ' ' | awk '/hfsx/ {print $2}'`
SZ=`sudo parted "$SB_DMG" unit B print | tr 'B' ' ' | awk '/hfsx/ {print $4}'`
LO=`sudo losetup -f "$SB_DMG" --offset $OFF --sizelimit $SZ --show`
sudo mount -t hfsplus -r "$LO" "$HFS_MNT"

# Mount the Time Machine filesystem
sudo `which tmfs` "$HFS_MNT" "$TM_MNT" -ouid=$(id -u $USER),gid=$(id -g $USER),allow_other

La monture finale sera accessible par vous (tant qu'elle vous $TM_MNTsera accessible). La dernière ligne peut échouer si FUSE n'est pas configuré pour autoriser un autre utilisateur, il vous indique comment le corriger.

Pour démonter, vous devez procéder comme suit:

sudo umount "$TM_MNT"
sudo rmdir "$TM_MNT"
sudo umount "$HFS_MNT"
sudo rmdir "$HFS_MNT"
sudo losetup -d "$LO"
sudo umount "$SB_MNT"
sudo rmdir "$SB_MNT"

Cela a été testé sur un système Fedora 28 et fonctionne bien.


3

Fusible Time Machine d'Apple, système de fichiers en lecture seule

https://github.com/abique/tmfs


4
Quel est le but de cette réponse? Cela fait-il quelque chose? Devons-nous deviner que cela répond même à la question? Vous devrez déballer quel est le but même de cela et comment il résout le problème
aléatoire

3

Le billet ci-dessus, d'Alexandre Bicque, fournit un programme Linux (? Unix) qui ouvrira un sparsebundle Time Machine stocké sur un disque ou une partition de disque HFS + au format Mac, permettant la lecture des fichiers sur un serveur Linux.

L'installation n'est pas pour les timides. Il est écrit en C ++ et nécessite 3 bibliothèques C ++ - cmake, FUSE et Boost, avec certaines versions minimales (qui peuvent ne pas être les dernières versions par défaut pour mon serveur Ubuntu 10.04). Il nécessite également de trouver et d'installer un compilateur g ++ et les bibliothèques ci-dessus.

J'utilise le serveur Ubuntu 10.04 et je ne suis pas vraiment un programmeur. Cependant, après un peu de travail et de temps, j'ai réussi à installer toutes les bibliothèques nécessaires, à compiler et à lier le paquet tmfs et à l'utiliser. Cela fonctionne, permettant de monter une Time Time Capsule TimeMachine. TOUTEFOIS, cela nécessite que le disque sur lequel l'image sparsebundle est écrite soit un disque ou une partition HFS +. Cela ne fonctionnera pas si l'image est écrite sur un système de fichiers NTFS ou ext2 / ext3 / ext4 sur un serveur Linux.

Depuis OS X 10.7 (Lion) d'Apple, les images Time Machine (sparsebundle) ne fonctionneront plus si elles sont montées sur un partage Linux Windows (smb / Samba), et il est nécessaire d'exécuter les services Linux / Unix Netatalk ( afpdplus avahi-daemon) pour utiliser Linux comme un serveur Time Machine.

J'ai beaucoup cherché une autre solution. Je soupçonne qu'un programmeur Linux / Unix C ++ pourrait faire mieux que moi, étendant le travail d'Alexandre Bicque pour permettre l'utilisation de systèmes de fichiers ext4 ou ntfs. J'essaie de comprendre comment le faire, mais j'ai un long chemin à parcourir.

Je pense que cela nécessitera que je comprenne mieux le fusible (système de fichiers de l'espace utilisateur) et peut-être les boost::filesystemaides au développement du système afin d'aller de l'avant.


AFAICS, actuellement aucune exigence pour HFS + n'existe pour l'un ou l'autre des tmfs. La description mentionne HFS, mais les étapes décrites fonctionneront quand même.
Blaisorblade

2

Malheureusement, le chemin pour trouver des choses dans un kit dispersé de Linux n'est pas simple. Cela peut être fait, mais cela nécessite d'interpréter certaines informations d'inode incorporées par Apple dans les liens physiques pour trouver le fichier réel dans le sparsebundle. Cette astuce MacWorld décrit comment vous allez déterminer où un lien dur dans un sparsebundle pointe en termes de fichier réel afin que vous puissiez y accéder à partir d'un système Linux. Il s'agit d'un disque Time Machine qui a été attaché en tant que disque local à une seule machine.

Dans votre cas, il <mount point>/Backups.backupdbest très probable que <machinename>.backupdb`.

Je ne sais pas s'il <mount point>/.HFS+ Private Directory Dataexiste au même endroit pour un disque partagé utilisé pour les sauvegardes Time Machine par plusieurs machines. Vous devrez faire une petite ls -lainspection du disque et des faisceaux épars pour le trouver.

Mais sinon, ces instructions MacWorld vous aideront à récupérer des fichiers sur un ensemble Time Machine, à partir de Linux.

Une mise à jour concernant le point de montage.

J'ai fait quelques essais sur la base de votre question mise à jour. Il semble que le point de montage doit être le *.sparsebundlerépertoire et non le lecteur. Si je monte le lecteur sous OS X et que /Volumes/Remote Backups/mymachine.sparsebundleje vais voir le bandsrépertoire comme vous le faites, il est inutile.

Mais si je monte mymachine.sparsebundletel que je peux y aller /Volumes/Time Machine Backups(c'est ce qu'il monte automatiquement dans le Finder lorsque je double-clique sur le mymachine.sparsebundle) je vois le Backups.backupdbrépertoire attendu et sous celui les répertoires date-heure comme prévu.


merci pour la réponse, mais je ne vois pas la même structure de fichiers que vous. Je ne reçois pas Backups.backupdb car il est encodé dans les fichiers de bande. Puisqu'il faut tellement de temps pour énumérer ce répertoire sous forme brute, j'ai exécuté un ls | tee /tmp/bandspour capturer la sortie. J'ai 96636 fichiers binaires, dont la plupart ont une taille de 8388608. Je n'ai aucun problème à contourner la structure de sauvegarde une fois qu'elle est transformée en système de fichiers par l'utilitaire de disque de mac, puis re-partagée. Je n'arrive pas à comprendre comment traiter les bandes sous Linux sans système OS X pour partager à nouveau le système de fichiers.
bmike

@bmike: essayez de monter le *.sparsebundlefichier en tant que système de fichiers hfsplus sur Linux au lieu du lecteur distant. Semblable à ce qui se passe si vous ouvrez le .sparsebundle sur votre Mac et que vous vous retrouvez avec un /Volumes/Time Machine Backupsvolume sur OS X. Réponse mise à jour avec plus de détails.
Ian C.

Sous Linux, vous ne pouvez pas monter directement des fichiers épars, contrairement à Mac OS X.
Blaisorblade
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.