Dapatkah Linux memasang direktori image bundle disk bundel Time Machine yang normal?

30

Saya mencari untuk melihat apakah Linux dapat me-mount dan membaca file yang disimpan secara asli pada Time Capsule melalui jaringan berbagi. Seperti pertanyaan ini , saya mencari sesuatu yang mereplikasi setidaknya fungsi read-only dari hdiutil untuk dilampirkan dan kemudian me-mount gambar bundle disk yang jarang.

Mount SMB mudah karena Time Capsule berbagi menggunakan AFP dan SMB , tapi saya tidak begitu yakin bundel disk jarang dapat dipasang sebagai direktori HFS + yang disusun kembali.

Poin bonus untuk perintah pemasangan yang berfungsi atau penunjuk ke paket yang sesuai yang mem-parsing format DMG ini.

Dalam kasus itu tidak jelas - ini adalah bagaimana file band terlihat kepada saya ketika dipasang dari Mac di Terminal dan apa yang saya harapkan untuk dilihat Linux tanpa kemampuan untuk me-mount sistem file yang sebenarnya yang dikodekan dalam banyak file band biner.

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
sumber
Mengapa Anda perlu "memasang" sparsebundle? Linux akan melihatnya sebagai direktori, hanya cdsetelah volume di mana cadangan Time Machine Anda disimpan dipasang di Linux.
Ian C.
Terima kasih Ian C - Saya mengedit pertanyaan untuk mengklarifikasi apa yang saya cari - data mentah ada di sana, hanya saja tidak disimpan dalam format yang lebih mudah dibaca yang paling berguna untuk membaca file tertentu dari titik waktu tertentu.
bmike

Jawaban:

32

Anda dapat menggunakan kombinasi keduanya:

FUSE filesystem untuk membaca gambar disk bundel Mac OS

Sekering Mesin Waktu Apple hanya membaca sistem file

Yang pertama menangani format .sparsebundle, menyajikannya sebagai file dmg, yang kemudian dapat dipasang seperti biasa. Yang kedua menangani direktori-tautan keras yang digunakan oleh Time Machine.

Tor Arne Vestbø
sumber
Ini harus menjadi jawaban yang diterima. tmfsmelakukan pekerjaan untuk saya dengan sempurna di Debian 7.0.
Gordon Bailey
Saya berterima kasih kepada @GordonBailey karena telah melakukan ping ke saya - saya melewatkan pemberitahuan bahwa jawaban lain diberikan.
bmike
Saya tidak bisa memasang dmg di luar kotak jadi saya juga harus menggunakan darling-dmg yang dipasang melalui FUSE.
Praxeolitic
4

Ini adalah ekstensi untuk jawaban oleh @ TorArneVestbø.

Setelah Anda menginstal https://github.com/torarnv/sparsebundlefs dan https://github.com/abique/tmfs Anda perlu menjalankan skrip berikut di Bash. Pastikan untuk memperbarui kedua variabel di awal menjadi sumber dan tujuan.

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

Mount akhir akan dapat diakses oleh Anda (selama $TM_MNTdapat diakses oleh Anda). Baris terakhir mungkin gagal jika FUSE tidak diatur untuk mengizinkan pengguna lain, ini memberi tahu Anda cara memperbaikinya.

Untuk meng-unmount, Anda perlu melakukan hal berikut:

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"

Ini diuji pada sistem Fedora 28 dan bekerja dengan baik.

thaimin
sumber
3

Sekering Mesin Waktu Apple hanya membaca sistem file

https://github.com/abique/tmfs

Tomislav
sumber
4
Apa tujuan dari jawaban ini? Apakah itu melakukan sesuatu? Apakah kita dapat menebaknya bahkan menjawab pertanyaan? Anda harus membongkar apa tujuan dari even ini dan bagaimana ia memperbaiki masalah
acak
3

Posting di atas, dari Alexandre Bicque, menyediakan program Linux (? Unix) yang akan membuka sparsebundle Time Machine yang disimpan di disk HFS + yang diformat Mac atau partisi disk, memungkinkan pembacaan file di server Linux.

Mempersiapkannya bukan untuk orang yang lemah hati. Ini ditulis dalam C ++ dan membutuhkan 3 C ++ libraries - cmake, FUSE, dan Boost, dengan versi minimum tertentu (yang mungkin bukan versi terbaru default untuk Ubuntu Server 10.04 saya.) Ini juga membutuhkan menemukan dan menginstal kompilator g ++ dan pustaka di atas.

Saya menggunakan server Ubuntu 10,04 dan tidak banyak programmer. Namun, setelah sedikit kerja dan waktu, saya berhasil menginstal semua perpustakaan yang diperlukan, mengkompilasi dan menautkan paket tmfs, dan menggunakannya. Ini berfungsi, memungkinkan pemasangan TimeMachine Time Capsule. NAMUN, itu memang mengharuskan disk tempat gambar sparsebundle ditulis menjadi disk atau partisi HFS +. Ini tidak akan berfungsi jika gambar ditulis pada sistem file NTFS atau ext2 / ext3 / ext4 pada server Linux.

Pada Apple OS X 10.7 (Lion), Time Machine (sparsebundle) gambar tidak akan lagi berfungsi jika dipasang pada Windows (smb / Samba) Linux berbagi, dan itu perlu untuk menjalankan Linux / Unix Netatalk (afpd plus avahi-daemon) untuk menggunakan Linux sebagai server Time Machine.

Saya sudah melakukan banyak mencari solusi lain. Saya menduga bahwa seorang programmer Linux / Unix C ++ bisa melakukan lebih baik daripada saya, memperluas karya Alexandre Bicque untuk memungkinkan penggunaan sistem file ext4 atau ntfs. Saya mencoba mencari cara untuk melakukannya, tetapi masih harus menempuh jalan panjang.

Saya pikir itu akan mengharuskan saya memahami lebih baik sekering (sistem file ruang pengguna) dan mungkin boost::filesystempembantu pengembangan sistem untuk bergerak maju.

Rod Prior
sumber
AFAICS, saat ini tidak ada persyaratan untuk HFS + untuk tmfs. Deskripsi menyebutkan HFS, tetapi langkah-langkah yang dijelaskan akan tetap berhasil.
Blaisorblade
2

Sayangnya jalan untuk menemukan hal-hal di sparsebundle dari Linux tidak langsung. Ini bisa dilakukan, tetapi itu membutuhkan penafsiran beberapa informasi inode yang ditanamkan Apple di hardlink untuk menemukan file aktual di sparsebundle. Petunjuk MacWorld ini menjelaskan bagaimana Anda mencari tahu di mana hardlink dalam sparsebundle menunjuk ke dalam hal file aktual sehingga Anda dapat mengaksesnya dari sistem Linux. Ini berkaitan dengan disk Time Machine yang telah terpasang sebagai disk lokal ke satu mesin.

Dalam kasus Anda <mount point>/Backups.backupdbkemungkinan besar <machinename>.backupdb`.

Saya tidak yakin apakah <mount point>/.HFS+ Private Directory Dataada di tempat yang sama untuk disk bersama yang digunakan untuk cadangan Time Machine oleh beberapa mesin. Anda harus melakukan sedikit ls -lapemeriksaan pada disk dan sparsebundle untuk menemukannya.

Tetapi sebaliknya instruksi MacWorld itu akan membantu Anda mengambil file pada bundel Time Machine, dari Linux.

Pembaruan tentang titik pemasangan.

Saya melakukan beberapa percobaan berdasarkan pertanyaan Anda yang diperbarui. Sepertinya titik mount seharusnya *.sparsebundledirektori dan bukan drive. Jika saya memasang drive di OS X dan pergi ke /Volumes/Remote Backups/mymachine.sparsebundlesaya melihat bandsdirektori seperti yang Anda lakukan dan itu tidak berguna.

Tetapi jika saya me mymachine.sparsebundle- mount sedemikian rupa sehingga saya dapat pergi ke /Volumes/Time Machine Backups(itu yang mount sebagai secara otomatis di Finder ketika saya klik dua kali pada mymachine.sparsebundle) saya melihat Backups.backupdbdirektori yang diharapkan dan di bawah itu direktori tanggal-waktu seperti yang diharapkan.

Ian C.
sumber
terima kasih atas jawabannya, tapi saya tidak melihat struktur file yang sama seperti Anda. Saya tidak mendapatkan Backups.backupdb karena itu disandikan di dalam file band. Karena butuh waktu lama untuk menyebutkan direktori itu dalam bentuk mentah, saya berlari ls | tee /tmp/bandsuntuk menangkap hasilnya. Saya memiliki 96636 file biner, sebagian besar berukuran 8388608. Saya tidak punya masalah menyiasati struktur cadangan setelah diubah menjadi sistem file oleh utilitas disk mac dan kemudian dibagikan ulang. Saya tidak tahu bagaimana memproses band-band di linux tanpa sistem OS X untuk membagikan kembali sistem file.
bmike
@bmike: coba pasang *.sparsebundlefile sebagai sistem file hfsplus di Linux, bukan remote drive. Mirip dengan apa yang terjadi jika Anda membuka .sparsebundle di Mac Anda dan Anda berakhir dengan /Volumes/Time Machine Backupsvolume di OS X. Jawaban yang diperbarui dengan lebih detail.
Ian C.
Di Linux Anda tidak dapat me-mount file sparsebundle secara langsung, tidak seperti Mac OS X.
Blaisorblade