web-dev-qa-db-fra.com

Linux peut-il monter un répertoire normal d’images de disque contenant des lots fragmentés de Time Machine?

Je cherche à savoir si Linux peut monter et lire les fichiers stockés de manière native sur une Time Capsule sur un partage réseau. Comme cette question , je cherche quelque chose qui réplique au moins la fonction en lecture seule de hdiutil pour attacher puis monter une image disque empaquetée peu dense.

Le montage SMB est facile, car Time Capsule utilise à la fois AFP et SMB , mais je ne suis pas sûr que le disque clairsemé bundle peut être monté en tant que répertoire HFS + reconstitué.

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

Au cas où ce ne soit pas clair - voici à quoi ressemblent les fichiers de bande lorsqu’ils sont montés à partir d’un Mac dans Terminal et à ce que j’attends de ce que Linux puisse voir sans pouvoir monter le système de fichiers réel qui est encodé dans une multitude de fichiers de bande 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
28
bmike

Vous pouvez utiliser une combinaison de ces deux:

Fusionner le système de fichiers pour lire les images de disques Mac OS empilés en lots

Système de fichiers en lecture seule Apple Time Machine Fuse

Le premier prend en charge le format .sparsebundle, en le présentant comme un fichier dmg, qui peut ensuite être monté comme d'habitude. La seconde s'occupe des répertoires de liens durs utilisés par Time Machine.

31
Tor Arne Vestbø

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

Le mettre en place 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 Ubuntu Server 10.04). Il nécessite également de rechercher et d’installer un compilateur g ++ et les bibliothèques ci-dessus.

J'utilise le serveur Ubuntu 10.04 et je ne suis pas un grand 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 TimeMachine Time Capsule. CEPENDANT, le disque sur lequel l’image sparsebundle est écrite doit être 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.

À partir de la version 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 qu’il est nécessaire d’exécuter des services Linux/Unix Netatalk (afpd plus avahi-daemon) Linux en tant que serveur Time Machine.

J'ai beaucoup cherché une autre solution. Je pense 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 encore beaucoup de chemin à faire.

Je pense que cela nécessitera que je comprenne beaucoup mieux le Fuse (système de fichiers de l'espace utilisateur) et peut-être les aides au développement du système boost::filesystem pour avancer.

3
Rod Prior

Système de fichiers en lecture seule Apple Time Machine Fuse

https://github.com/abique/tmfs

3
tomislav

Malheureusement, le chemin à parcourir pour trouver des solutions dans un sparse multiple 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 dans le sparsebundle. Cette astuce MacWorld décrit comment vous voulez savoir où un lien physique dans un sparsebundle pointe en termes de fichier afin que vous puissiez y accéder à partir d'un système Linux. Il s'agit d'un disque Time Machine qui a été connecté en tant que disque local à un seul ordinateur.

Dans votre cas, <mount point>/Backups.backupdb est le plus probable <machinename>. Backupdb`.

Je ne sais pas si <mount point>/.HFS+ Private Directory Data existe au même endroit pour un disque partagé utilisé pour les sauvegardes Time Machine par plusieurs ordinateurs. Vous devrez faire une petite inspection du disque et des sparsebundles ls -la 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 expériences sur la base de votre question mise à jour. Il semble que le point de montage devrait être le répertoire *.sparsebundle et non le lecteur. Si je monte le lecteur sous OS X et que je vais à /Volumes/Remote Backups/mymachine.sparsebundle je vois le répertoire bands comme vous et c’est inutile.

Mais si je monte mymachine.sparsebundle de telle sorte que je puisse accéder à /Volumes/Time Machine Backups (c'est ce qu'il se monte automatiquement dans le Finder lorsque je double-clique sur le mymachine.sparsebundle), je vois le répertoire Backups.backupdb et les répertoires date-heure attendus comme prévu.

2
Ian C.

Ceci est 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

Le montage final sera accessible par vous (tant que $TM_MNT vous sera accessible). La dernière ligne peut échouer si Fuse n’est pas configuré pour autoriser un autre utilisateur, il vous indique comment le résoudre.

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"

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

1
thaimin