Linux può montare una normale directory di immagini del disco bundle Time Machine sparse?


30

Sto cercando di vedere se Linux è in grado di montare e leggere i file memorizzati nativamente su Time Capsule su una condivisione di rete. Come questa domanda , sto cercando qualcosa che replica almeno la funzione di sola lettura di hdiutil da allegare e quindi montare immagini di un bundle di dischi sparsi.

Il montaggio SMB è facile poiché Time Capsule condivide sia AFP che SMB , ma non sono sicuro che il bundle di dischi sparsi possa essere montato come directory HFS + ricostituita.

Punti bonus per un comando mount funzionante o puntatore al pacchetto appropriato che analizza questo formato DMG.

Nel caso in cui non sia chiaro: ecco come mi appaiono i file della band quando sono montati da un Mac in Terminal e cosa mi aspetto che Linux veda senza la possibilità di montare il file system effettivo che è codificato in una moltitudine di file binari di banda.

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

Perché è necessario "montare" lo sparsebundle? Linux dovrebbe vederlo come una directory, appena cddentro di esso una volta che il volume in cui sono archiviati i backup di Time Machine è montato su Linux.
Ian C.,

Grazie Ian C - Ho modificato la domanda per chiarire cosa sto cercando - i dati grezzi sono tutti lì, semplicemente non memorizzati in un formato più leggibile che è più utile per leggere un file specifico da un determinato momento.
bmike,

Risposte:


32

Puoi usare una combinazione di questi due:

File system FUSE per la lettura di immagini disco sparse in bundle di Mac OS

Il fusibile Time Machine di Apple legge solo il file system

Il primo si occupa del formato .sparsebundle, presentandolo come un file dmg, che può quindi essere montato come al solito. Il secondo si occupa dei collegamenti diretti della directory utilizzati da Time Machine.


Questa dovrebbe essere la risposta accettata. tmfsha fatto il lavoro per me perfettamente su Debian 7.0.
Gordon Bailey,

Ringrazio @GordonBailey per avermi inviato un ping per questo. Ho perso la notifica che è stata fornita un'altra risposta.
bmike,

Non ho potuto montare il dmg fuori dalla scatola, quindi ho anche dovuto usare darling-dmg che lo ha montato tramite FUSE.
Prassolitico

4

Questa è un'estensione della risposta di @ TorArneVestbø.

Dopo aver installato https://github.com/torarnv/sparsebundlefs e https://github.com/abique/tmfs è necessario eseguire il seguente script in Bash. Assicurati di aggiornare le due variabili all'inizio in modo che siano l'origine e la destinazione.

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

Il montaggio finale sarà accessibile da te (purché $TM_MNTsia accessibile a te). La riga finale potrebbe non riuscire se FUSE non è configurato per consentire ad altri utenti, ti dice come ripararlo.

Per smontare è necessario effettuare le seguenti operazioni:

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"

Questo è stato testato su un sistema Fedora 28 e funziona bene.


3

Il fusibile Time Machine di Apple legge solo il file system

https://github.com/abique/tmfs


4
Qual è lo scopo di questa risposta? Fa qualcosa? Dobbiamo supporre che risponda anche alla domanda? Dovrai decomprimere qual è lo scopo di questo e come risolve il problema
casuale

3

Il post sopra, da Alexandre Bicque, fornisce un programma Linux (? Unix) che aprirà una sparsebundle di Time Machine memorizzata su un disco HFS + o una partizione disco formattati per Mac, consentendo la lettura dei file su un server Linux.

Prepararlo non è per i deboli di cuore. È scritto in C ++ e richiede 3 librerie C ++ - cmake, FUSE e Boost, con alcune versioni minime (che potrebbero non essere le ultime versioni predefinite per il mio Ubuntu Server 10.04.) Richiede anche la ricerca e l'installazione di un compilatore g ++ e delle librerie di cui sopra.

Uso Ubuntu server 10.04 e non sono un programmatore. Tuttavia, dopo un bel po 'di lavoro e tempo, sono riuscito a installare tutte le librerie necessarie, compilare e collegare il pacchetto tmfs e usarlo. Funziona, consentendo il montaggio di una TimeMachine Time Capsule. TUTTAVIA, richiede che il disco su cui è scritta l'immagine sparsebundle sia un disco o una partizione HFS +. Non funzionerà se l'immagine è scritta su un file system NTFS o ext2 / ext3 / ext4 su un server Linux.

A partire dall'OS X 10.7 (Lion) di Apple, le immagini di Time Machine (sparsebundle) non funzioneranno più se montate su una condivisione Linux di Windows (smb / Samba) ed è necessario eseguire i servizi Linux / Unix Netatalk ( afpdplus avahi-daemon) per usare Linux come un server Time Machine.

Ho cercato molto un'altra soluzione. Sospetto che un programmatore Linux / Unix C ++ potrebbe fare meglio di me, estendendo il lavoro di Alexandre Bicque per consentire l'uso di filesystem ext4 o ntfs. Sto cercando di capire come farlo, ma ho ancora molta strada da fare.

Penso che richiederà di comprendere molto meglio il fusibile (file system spazio utente) e forse gli boost::filesystemaiutanti di sviluppo del sistema per andare avanti.


AFAICS, attualmente non esiste alcun requisito per HFS + per nessuno dei TMF. La descrizione menziona HFS, ma i passaggi descritti funzioneranno comunque.
Blaisorblade,

2

Sfortunatamente il percorso per trovare le cose in un sparatutto da Linux non è semplice. Può essere fatto, ma richiede l'interpretazione di alcune informazioni di inode che Apple incorpora nei collegamenti fisici per trovare il file effettivo nello sparsebundle. Questo suggerimento di MacWorld descrive come si fa a capire dove un hardlink in uno sparsebundle punta in termini di file reale in modo da poter accedervi da un sistema Linux. Si tratta di un disco di Time Machine che è stato collegato come disco locale a una singola macchina.

Nel tuo caso <mount point>/Backups.backupdbè molto probabile <machinename>.backupdb`.

Non sono sicuro che <mount point>/.HFS+ Private Directory Dataesista nello stesso punto per un disco condiviso utilizzato per i backup di Time Machine da più macchine. Dovrai fare una piccola ls -laispezione del disco e degli sparsebundles per trovarlo.

Ma per il resto quelle istruzioni di MacWorld ti aiuteranno a recuperare i file su un bundle di Time Machine, da Linux.

Un aggiornamento relativo al punto di montaggio.

Ho fatto alcuni esperimenti in base alla tua domanda aggiornata. Sembra che il punto di montaggio dovrebbe essere la *.sparsebundledirectory e non l'unità. Se monto l'unità in OS X e vado a /Volumes/Remote Backups/mymachine.sparsebundlevedere la bandsdirectory come te ed è inutile.

Ma se monto in modo mymachine.sparsebundletale che posso andare /Volumes/Time Machine Backups(è quello che monta automaticamente in Finder quando faccio doppio clic su mymachine.sparsebundle) vedo la Backups.backupdbdirectory prevista e sotto quella le directory data-ora come previsto.


grazie per la risposta, ma non vedo la tua stessa struttura di file. Non ottengo Backups.backupdb poiché è codificato all'interno dei file della band. Dal momento che impiega così tanto tempo a enumerare quella directory in formato non elaborato, ho eseguito a ls | tee /tmp/bandsper catturare l'output. Ho 96636 file binari, molti dei quali di dimensioni 8388608. Non ho problemi a aggirare la struttura di backup una volta che è stato trasformato in un file system dall'utilità del disco di Mac e quindi ricondiviso. Non riesco proprio a capire come elaborare le bande su Linux senza il sistema OS X per ricondividere il file system.
bmike,

@bmike: prova a montare il *.sparsebundlefile come filesystem hfsplus su Linux anziché come unità remota. Simile a quello che succede se apri .sparsebundle sul tuo Mac e finisci con un /Volumes/Time Machine Backupsvolume su OS X. Risposta aggiornata con maggiori dettagli.
Ian C.,

Su Linux non puoi montare direttamente i file sparsebundle, a differenza di Mac OS X.
Blaisorblade,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.