Чи може Linux монтувати звичайний каталог зображень дискового пакета Time Machine?


30

Я дивлюсь, чи може Linux монтувати та читати файли, що зберігаються в капсулі часу через мережеву спільну доступність. Як і це запитання , я шукаю щось, що повторює принаймні функцію hdiutil лише для читання, щоб приєднати та змонтувати зображення дискових пакетів.

Монтувати SMB легко, оскільки Time Capsule ділиться як AFP, так і SMB , але я не дуже впевнений, що розріджений диск може бути змонтований як відновлений каталог HFS +.

Бонусні бали за робочу команду монтування або вказівник на відповідний пакет, який аналізує цей формат DMG.

Якщо це не зрозуміло - саме так виглядають смугові файли при монтажі з Mac у терміналі, і що я очікую, що Linux побачить без можливості монтувати фактичну файлову систему, кодовану у безлічі двійкових смугових файлів.

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

Чому вам потрібно «монтувати» розрідженість? Linux повинен бачити це як каталог, щойно cdв ньому розміщено, коли об'єм, де зберігаються резервні копії Time Machine, встановлений на Linux.
Ян C.

Дякую Іану С - я відредагував питання, щоб уточнити, що я шукаю - необроблені дані є все, тільки не зберігаються у більш читаному форматі, який є найбільш корисним для читання конкретного файлу з певного моменту часу.
bmike

Відповіді:


32

Ви можете використовувати комбінацію цих двох:

Файлова система FUSE для читання зображень дискових дисків з розрідженим пакетом Mac OS

Запобіжник Apple Time Time запобіжник для читання лише для файлової системи

Перший піклується про формат .sparsebundle, представляючи його як файл dmg, який потім може бути змонтований як звичайний. Другий піклується про жорсткі посилання каталогів, якими користується Time Machine.


Це має бути прийнятою відповіддю. tmfsзробив цю роботу для мене ідеально на Debian 7.0.
Гордон Бейлі

Я дякую @GordonBailey за те, що він мене надіслав на це - я пропустив сповіщення про надання іншої відповіді.
bmike

Я не зміг встановити dmg з коробки, тому мені також довелося використовувати дорогу-dmg, яка монтувала його через FUSE.
Праксеоліт

4

Це розширення до відповіді від @ TorArneVestbø.

Після встановлення https://github.com/torarnv/sparsebundlefs та https://github.com/abique/tmfs вам потрібно запустити наступний сценарій у Bash. Не забудьте оновити дві змінні на початку, щоб вони були джерелом та адресою.

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

Остаточне кріплення буде доступне вам (до тих пір, поки воно $TM_MNTбуде доступне для вас). Завершальний рядок може бути невдалим, якщо FUSE не встановлений для дозволу іншому користувачеві, він розповість, як це виправити.

Для відключення потрібно зробити наступне:

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"

Це було протестовано в системі Fedora 28 і працює добре.


3

Запобіжник Apple Time Time запобіжник для читання лише для файлової системи

https://github.com/abique/tmfs


4
Яка мета цієї відповіді? Це щось робить? Чи варто гадати, що це навіть відповідає на питання? Вам потрібно буде розпакувати, яка мета цього рівнозначна, і як вона вирішує проблему
випадково

3

Вищенаведений пост від Олександра Біке надає програму Linux (? Unix), яка відкриє розрізнений пакет Time Machine, який зберігається на форматі Mac-диска HFS + або дискового розділу, що дозволяє читати файли на сервері Linux.

Налаштування не для слабких людей. Він написаний на C ++ і вимагає 3 C ++ бібліотек - cmake, FUSE та Boost, з певними мінімальними версіями (які можуть не бути типовими останніми версіями для мого Ubuntu Server 10.04.). Також потрібен пошук та встановлення компілятора g ++ та вищезазначених бібліотек.

Я використовую сервер Ubuntu 10.04 і не дуже програміст. Однак після неабиякої роботи та часу мені вдалося встановити всі необхідні бібліотеки, зібрати та зв’язати пакет tmfs та використовувати його. Це спрацьовує, дозволяючи монтувати капсулу TimeMachine Time. ЗАРАЗ, це вимагає, щоб диск, на якому записано розріджене зображення, був HFS + диском або розділом. Він не працюватиме, якщо зображення записане у файловій системі NTFS або ext2 / ext3 / ext4 на сервері Linux.

Оскільки в ОС OS X 10.7 (Lion) від Apple, зображення Time Machine (sparsebundle) більше не працюватимуть, якщо їх встановити на спільну частку Windows (smb / Samba), і для запуску Linux / Unix Netatalk ( afpdплюс avahi-daemon) потрібно використовувати Linux як Linux сервер Time Machine.

Я багато шукав іншого рішення. Я підозрюю, що програміст Linux / Unix C ++ міг би краще, ніж у мене, розширивши роботу Олександра Біке, щоб дозволити використовувати файлові системи ext4 або ntfs. Я намагаюся розібратися, як це зробити, але маю довгий шлях.

Я думаю, що це зажадає, щоб я зрозумів набагато краще запобіжник (файлова система користувальницького простору) і, можливо, boost::filesystemпомічники в розробці системи, щоб рухатись вперед.


AFAICS, в даний час не існує вимоги до HFS + для жодного з tmfs. В описі згадується HFS, але описані кроки будуть працювати все одно.
Blaisorblade

2

На жаль, шлях до пошуку речей в розрідженому пакеті Linux не є простим. Це можна зробити, але це потребує інтерпретації деякої інформації про inode, яку Apple вбудовує у жорсткі посилання, щоб знайти фактичний файл у розрізненому пакеті. Цей підказка MacWorld описує, як ви розбираєтесь, куди вказується жорстке посилання в розрізненому зв’язку з точки зору фактичного файлу, щоб ви могли отримати доступ до нього з системи Linux. Він стосується диска Time Machine, який приєднаний як локальний диск до однієї машини.

У вашому випадку <mount point>/Backups.backupdbшвидше за все <machinename>.backupdb`.

Я не впевнений, чи <mount point>/.HFS+ Private Directory Dataіснує в одному місці для спільного диска, який використовується для резервного копіювання Time Machine декількома машинами. Для того, щоб знайти це, вам доведеться провести невеликий ls -laогляд диска та розріджених пакетів.

Але в іншому випадку ці інструкції MacWorld допоможуть вам отримати файли в пакеті Time Machine з Linux.

Оновлення щодо точки монтажу.

Я зробив кілька експериментів на основі вашого оновленого питання. Схоже, точкою монтажу має бути *.sparsebundleкаталог, а не диск. Якщо я монтую накопичувач в OS X і переходжу до, /Volumes/Remote Backups/mymachine.sparsebundleя бачу bandsкаталог, як ви, і він марний.

Але якщо я монтую mymachine.sparsebundleтак, що я можу перейти /Volumes/Time Machine Backups(саме це він автоматично встановлюється у Finder, коли я двічі клацнув на mymachine.sparsebundle), я бачу очікуваний Backups.backupdbкаталог і під цим каталогами дати-дати, як очікувалося.


дякую за відповідь, але я не бачу такої ж файлової структури, як і ви. Я не отримую Backups.backupdb, оскільки це закодовано всередині смугових файлів. Оскільки для перерахування цього каталогу в необробленому вигляді потрібно так багато часу, я запустив a, ls | tee /tmp/bandsщоб захопити вихід. У мене є 96636 двійкових файлів, більшість з яких мають розмір 8388608. У мене немає проблем із тим, як обійти структуру резервного копіювання, як тільки вона перетвориться на файлову систему за допомогою утиліти диска Mac і потім повторно поділиться. Я просто не можу зрозуміти, як обробити групи в Linux без системи OS X для повторного доступу до файлової системи.
bmike

@bmike: спробуйте встановити *.sparsebundleфайл як файл hfsplus у Linux замість віддаленого диска. Аналогічно тому, що відбувається, якщо ви відкриєте .sparsebundle на вашому Mac, і в кінцевому підсумку ви отримаєте /Volumes/Time Machine Backupsобсяг в ОС X. Оновлений відповідь більш детально.
Ян C.

На Linux ви не можете безпосередньо монтувати розріджені файли, на відміну від Mac OS X.
Blaisorblade,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.