Czy Linux może zamontować normalny katalog obrazów dysku rzadkiego pakietu Time Machine?

30

Chcę sprawdzić, czy Linux może montować i czytać pliki natywnie przechowywane na Time Capsule przez udział sieciowy. Podobnie jak to pytanie , szukam czegoś, co powiela przynajmniej hdiutil funkcję tylko do odczytu, aby dołączyć, a następnie zamontować rzadkie obrazy dysku pakietu.

Podłączenie SMB jest łatwe, ponieważ Time Capsule korzysta zarówno z AFP, jak i SMB , ale nie jestem pewien, czy pakiet dysku rzadkiego może zostać zamontowany jako odtworzony katalog HFS +.

Punkty bonusowe za działające polecenie lub wskaźnik montowania do odpowiedniego pakietu, który analizuje ten format DMG.

W przypadku, gdy nie jest to jasne - tak wyglądają dla mnie pliki zespołu po zamontowaniu z komputera Mac w terminalu i to, czego oczekuję, że zobaczy Linux bez możliwości zamontowania rzeczywistego systemu plików zakodowanego w wielu plikach zespołu binarnego.

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
bmike
źródło
Dlaczego musisz „zamontować” zestaw sparsebundle? Linux powinien widzieć go jako katalog, po prostu cdw nim, gdy wolumin, w którym przechowywane są kopie zapasowe Time Machine, zostanie zamontowany w systemie Linux.
Ian C.
Dzięki Ian C - zredagowałem pytanie, aby wyjaśnić, czego szukam - surowe dane są tam wszystkie, po prostu nie są przechowywane w bardziej czytelnym formacie, który jest najbardziej przydatny do odczytu określonego pliku z określonego momentu.
bmike

Odpowiedzi:

32

Możesz użyć kombinacji tych dwóch:

System plików FUSE do odczytywania obrazów dyskowych pakietu Mac OS

Bezpiecznik Time Machine firmy Apple, system plików tylko do odczytu

Pierwszy zajmuje się formatem .sparsebundle, prezentując go jako plik dmg, który można następnie zamontować jak zwykle. Drugi zajmuje się twardymi linkami do katalogu używanymi przez Time Machine.

Tor Arne Vestbø
źródło
To powinna być zaakceptowana odpowiedź. tmfswykonał dla mnie pracę doskonale w Debianie 7.0.
Gordon Bailey,
Dziękuję @GordonBailey za pingowanie mnie do tego - przegapiłem powiadomienie, że podano inną odpowiedź.
bmike
Nie mogłem zamontować dmg po wyjęciu z pudełka, więc musiałem również użyć kochanie-dmg, które zamontowało go przez BEZPIECZNIK.
Praxeolitic
4

To jest rozszerzenie odpowiedzi @ TorArneVestbø.

Po zainstalowaniu https://github.com/torarnv/sparsebundlefs i https://github.com/abique/tmfs musisz uruchomić następujący skrypt w Bash. Zaktualizuj dwie zmienne na początku jako źródło i miejsce docelowe.

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

Ostateczny wierzchowiec będzie dla ciebie dostępny (o ile $TM_MNTjest on dostępny). Ostatnia linia może się nie powieść, jeśli BEZPIECZNIK nie jest skonfigurowany tak, aby zezwolić innemu użytkownikowi, mówi ci, jak to naprawić.

Aby odmontować, wykonaj następujące czynności:

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"

Zostało to przetestowane na systemie Fedora 28 i działa dobrze.

thaimin
źródło
3

Bezpiecznik Time Machine firmy Apple, system plików tylko do odczytu

https://github.com/abique/tmfs

Tomislav
źródło
4
Jaki jest cel tej odpowiedzi? Czy to coś robi? Czy mamy zgadywać, że nawet odpowiada na pytanie? Musisz rozpakować, jaki jest cel tego i jak rozwiązuje problem
losowo
3

Powyższy post, autorstwa Alexandre Bicque, zawiera program dla systemu Linux (? Unix), który otworzy sparsebundle Time Machine przechowywany na dysku HFS + w formacie Mac lub partycji dysku, umożliwiając odczyt plików na serwerze Linux.

Przygotowanie go nie jest dla osób o słabych nerwach. Jest napisany w C ++ i wymaga 3 bibliotek C ++ - cmake, FUSE i Boost, z pewnymi minimalnymi wersjami (które mogą nie być domyślnymi najnowszymi wersjami dla mojego Ubuntu Server 10.04). Wymaga to również znalezienia i zainstalowania kompilatora g ++ i powyższych bibliotek.

Używam serwera Ubuntu 10.04 i nie jestem zbytnim programistą. Jednak po długim czasie i pracy udało mi się zainstalować wszystkie niezbędne biblioteki, skompilować i połączyć pakiet tmfs i użyć go. Działa, umożliwiając zamontowanie TimeMachine Time Capsule. JEDNAK, wymaga, aby dysk, na którym zapisany jest obraz sparsebundle, był dyskiem lub partycją HFS +. Nie zadziała, jeśli obraz zostanie zapisany w systemie plików NTFS lub ext2 / ext3 / ext4 na serwerze Linux.

Począwszy od systemu OS X 10.7 firmy Apple (Lion), obrazy Time Machine (sparsebundle) nie będą już działać, jeśli zostaną zamontowane na udziale systemu Windows (smb / Samba) Linux i konieczne jest uruchomienie usług Linux / Unix Netatalk ( afpdplus avahi-daemon), aby używać Linuksa jako serwer Time Machine.

Dużo szukałem innego rozwiązania. Podejrzewam, że programista Linux / Unix C ++ mógłby poradzić sobie lepiej niż ja, rozszerzając pracę Alexandre Bicque, aby umożliwić stosowanie systemów plików ext4 lub NTFS. Próbuję wymyślić, jak to zrobić, ale mam przed sobą długą drogę.

Myślę, że będzie to konieczne, aby lepiej zrozumieć bezpiecznik (system plików w przestrzeni użytkownika) i być może boost::filesystempomocników programistycznych, aby przejść dalej.

Rod Prior
źródło
AFAICS, obecnie nie ma wymagań dla HFS + dla żadnego z tmfs. W opisie wspomniano o HFS, ale opisane kroki i tak będą działać.
Blaisorblade,
2

Niestety ścieżka do znalezienia rzeczy w rzadkim pakiecie od Linuksa nie jest prosta. Można to zrobić, ale wymaga to interpretacji niektórych informacji i-węzłowych, które Apple osadza w linkach twardych, aby znaleźć rzeczywisty plik w pakiecie rzadkim. Ta wskazówka MacWorld opisuje, w jaki sposób zaczynasz zastanawiać się, gdzie wskazuje hardlink w części sparsebund pod względem rzeczywistego pliku, abyś mógł uzyskać do niego dostęp z systemu Linux. Zajmuje się dyskiem Time Machine, który został podłączony jako dysk lokalny do pojedynczego komputera.

W twoim przypadku <mount point>/Backups.backupdbnajprawdopodobniej jest to <machinename>.backupdb`.

Nie jestem pewien, czy <mount point>/.HFS+ Private Directory Dataistnieje w tym samym miejscu dla dysku współdzielonego używanego do tworzenia kopii zapasowych Time Machine przez wiele komputerów. ls -laAby to znaleźć, musisz przeprowadzić małą inspekcję dysku i pakietów sparse.

Ale w przeciwnym razie instrukcje MacWorld pomogą Ci pobrać pliki z pakietu Time Machine z Linuksa.

Aktualizacja dotycząca punktu montowania.

Przeprowadziłem eksperymenty na podstawie zaktualizowanego pytania. Wygląda na to, że punktem montowania powinien być *.sparsebundlekatalog, a nie dysk. Jeśli podłączę dysk w systemie OS X i przejdę do katalogu, /Volumes/Remote Backups/mymachine.sparsebundlezobaczę, bandsjak ty, i jest to bezużyteczne.

Ale jeśli zamontuję mymachine.sparsebundletak, że mogę przejść do /Volumes/Time Machine Backups(to, co montuje automatycznie w Finderze po dwukrotnym kliknięciu na mymachine.sparsebundle), widzę oczekiwany Backups.backupdbkatalog, a pod nim katalogi daty i czasu zgodnie z oczekiwaniami.

Ian C.
źródło
dzięki za odpowiedź, ale nie widzę takiej samej struktury plików jak ty. Nie dostaję Backups.backupdb, ponieważ jest on zakodowany w plikach zespołu. Ponieważ tak długo trwa wyliczenie tego katalogu w postaci surowej, uruchomiłem a, ls | tee /tmp/bandsaby przechwycić dane wyjściowe. Mam 96636 plików binarnych, z których większość ma rozmiar 8388608. Nie mam problemu z obejściem struktury kopii zapasowej, która została przekształcona w system plików przez narzędzie dyskowe Mac, a następnie ponownie udostępniona. Po prostu nie mogę zrozumieć, jak przetwarzać pasma na systemie Linux bez systemu OS X w celu ponownego udostępnienia systemu plików.
bmike
@bike: spróbuj zamontować *.sparsebundleplik jako system plików hfsplus w systemie Linux zamiast dysku zdalnego. Podobne do tego, co się stanie, jeśli otworzysz .sparsebundle na komputerze Mac i uzyskasz /Volumes/Time Machine Backupswolumin w systemie OS X. Zaktualizowana odpowiedź z bardziej szczegółowymi informacjami.
Ian C.
W systemie Linux nie można montować bezpośrednio plików sparsebundle, w przeciwieństwie do Mac OS X.
Blaisorblade