28

Я смотрю, может ли 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

5 ответов5

31

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

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

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

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

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/Unix Netatalk (afpd плюс avahi-daemon) использовать Linux в качестве сервера Time Machine.

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

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

3

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

https://github.com/abique/tmfs

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 осмотр диска и sparsebundles найти это.

Но в противном случае эти инструкции MacWorld помогут вам извлечь файлы из комплекта Time Machine из Linux.

Обновление относительно точки монтирования.

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

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

1

Это продолжение ответа от @ 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 и работает хорошо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .