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

30

Я смотрю, может ли Linux смонтировать и прочитать файлы, изначально хранящиеся в Time Capsule, через сетевой ресурс. Как и в этом вопросе , я ищу что-то, что реплицирует хотя бы функцию 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
bmike
источник
Зачем вам нужно «монтировать» разбросанную массу? Linux должен видеть его как каталог, как раз cdв тот момент, когда том, где хранятся ваши резервные копии Time Machine, монтируется в Linux.
Ян С.
Спасибо Ян C - я отредактировал вопрос, чтобы уточнить, что я ищу - все сырые данные там, но не хранятся в более удобочитаемом формате, который наиболее полезен для чтения конкретного файла в определенный момент времени.
bmike

Ответы:

32

Вы можете использовать комбинацию этих двух:

Файловая система FUSE для чтения образов дисков OS OS

Предохранитель Time Machine от Apple, файловая система только для чтения

Первый заботится о формате .sparsebundle, представляя его как файл dmg, который затем можно смонтировать как обычно. Вторая заботится о жестких ссылках каталога, используемых Time Machine.

Тор Арне Вестбо
источник
Это должен быть принятый ответ. tmfsотлично справился со мной на Debian 7.0.
Гордон Бейли
Я благодарю @GordonBailey за то, что я перезвонил - я пропустил уведомление о том, что был предоставлен другой ответ.
bmike
Я не мог смонтировать dmg из коробки, поэтому мне также пришлось использовать darling-dmg, который монтировал его через FUSE.
Praxeolitic
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 и работает хорошо.

thaimin
источник
3

Предохранитель Time Machine от Apple, файловая система только для чтения

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 Server 10.04 и не очень программист. Тем не менее, после значительной работы и времени мне удалось установить все необходимые библиотеки, скомпилировать и связать пакет tmfs и использовать его. Это работает, позволяя монтировать TimeMachine Time Capsule. ОДНАКО, требуется, чтобы диск, на котором записан образ sparsebundle, был HFS + диск или раздел. Он не будет работать, если образ записан в файловой системе NTFS или ext2 / ext3 / ext4 на сервере Linux.

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

Я много искал другое решение. Я подозреваю, что программист Linux / Unix C ++ мог бы справиться лучше, чем я, расширив работу Александра Бика, позволив использовать файловые системы ext4 или ntfs. Я пытаюсь понять, как это сделать, но мне предстоит долгий путь.

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

Род Приор
источник
AFAICS, в настоящее время не существует требования для HFS + ни для одной из tmfs. В описании упоминается HFS, но описанные шаги будут работать в любом случае.
Blaisorblade
2

К сожалению, путь к поиску чего-то в Linux очень непростой. Это можно сделать, но для этого требуется интерпретация некоторой информации inode, которую Apple встраивает в жесткие ссылки, чтобы найти фактический файл в sparsebundle. Эта подсказка 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, так как он закодирован внутри файлов группы. Поскольку перечисление этого каталога в необработанном виде занимает так много времени, я запустил ls | tee /tmp/bandsкоманду, чтобы получить выходные данные. У меня 96636 бинарных файлов, большинство из них размером 8388608. У меня нет проблем с обходом структуры резервных копий после того, как она была преобразована в файловую систему с помощью дисковой утилиты Mac, а затем передана другим. Я просто не могу понять, как обрабатывать полосы в Linux без системы OS X для повторного использования файловой системы.
bmike
@bmike: попробуйте смонтировать *.sparsebundleфайл как файловую систему hfsplus в Linux вместо удаленного диска. Аналогично тому, что происходит, если вы откроете .sparsebundle на своем Mac и у вас получится /Volumes/Time Machine Backupsтом на OS X. Обновленный ответ с более подробной информацией.
Ян С.
В Linux вы не можете монтировать файлы sparsebundle напрямую, в отличие от Mac OS X.
Blaisorblade