Linuxは通常のTime Machineスパースバンドルディスクイメージディレクトリをマウントできますか?


30

Linuxがネットワーク共有を介してTime Capsuleにネイティブに保存されているファイルをマウントして読み取ることができるかどうかを確認しています。この質問のように、スパースバンドルディスクイメージをアタッチしてマウントするために、少なくともhdiutilの読み取り専用機能を複製するものを探しています。

Time CapsuleはAFPSMBの両方を使用して共有するため、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.

Ian Cに感謝します-私が探しているものを明確にするために質問を編集しました-生データはすべてあり、特定の時点から特定のファイルを読み取るのに最も役立つ読みやすい形式で保存されていません。
bmike

回答:


32

次の2つの組み合わせを使用できます。

Mac OSスパースバンドルディスクイメージを読み取るためのFUSEファイルシステム

AppleのTime Machineヒューズ読み取り専用ファイルシステム

最初は、.sparsebundle形式を処理し、dmgファイルとして提示します。その後、通常のようにマウントできます。2番目は、Time Machineが使用するディレクトリハードリンクを処理します。


これは受け入れられた答えでなければなりません。tmfsDebian 7.0で完璧に仕事をしてくれました。
ゴードンベイリー

これをpingしてくれた@GordonBaileyに感謝します。別の回答が提供されたという通知を逃しました。
bmike

ボックスからdmgをマウントできなかったので、FUSE経由でマウントしたdarling-dmgも使用する必要がありました。
プラクセオリック

4

これは、@TorArneVestbøによる回答の拡張です。

https://github.com/torarnv/sparsebundlefshttps://github.com/abique/tmfsをインストールしたら、次のスクリプトをBashで実行する必要があります。開始時に2つの変数を更新して、送信元と宛先になるようにしてください。

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 Machineヒューズ読み取り専用ファイルシステム

https://github.com/abique/tmfs


4
この答えの目的は何ですか?それは何をしますか?私たちはそれが質問に答えさえすると推測するでしょうか?あなたは、このさえの目的が何であるかを解凍する必要がありますし、それが問題修正方法
ランダム

3

上記のAlexandre Bicqueの投稿は、MacフォーマットのHFS +ディスクまたはディスクパーティションに保存されているTime Machineスパースバンドルを開き、Linuxサーバー上のファイルの読み取りを可能にするLinux(?unix)プログラムを提供します。

設定するのは気の弱い人向けではありません。C ++で記述されておりcmake、特定の最小バージョン(Ubuntu Server 10.04のデフォルトの最新バージョンではない場合があります)を含む3つのC ++ライブラリ- 、FUSE、およびBoostが必要です。また、g ++コンパイラと上記のライブラリを見つけてインストールする必要があります。

私はUbuntuサーバー10.04を使用していますが、あまりプログラマーではありません。しかし、かなりの時間と労力を費やして、必要なライブラリをすべてインストールし、tmfsパッケージをコンパイルしてリンクし、使用することに成功しました。動作し、TimeMachine Time Capsuleをマウントできます。ただし、sparsebundleイメージが書き込まれるディスクはHFS +ディスクまたはパーティションである必要があります。イメージがNTFSまたはLinuxサーバー上のext2 / ext3 / ext4ファイルシステムに書き込まれている場合は機能しません。

AppleのOS X 10.7(Lion)の時点で、Windows(smb / Samba)Linux共有にマウントされている場合、Time Machine(sparsebundle)イメージは動作しなくなり、Linux / Unix Netatalkを実行する必要があります(afpdプラスavahi-daemon Linuxを使用するためにLinux)サービスを Time Machineサーバー。

私は別の解決策をたくさん探しました。Linux / Unix C ++プログラマーはAlexandre Bicqueの作業を拡張してext4またはntfsファイルシステムの使用を許可するよりも、Linux / Unix C ++プログラマーの方がうまくいくと思います。私はそれを行う方法を理解しようとしていますが、長い道のりがあります。

boost::filesystem先に進むためには、fuse(ユーザー空間ファイルシステム)と、おそらくシステム開発ヘルパーをよりよく理解する必要があると思います。


AFAICS、現在、どちらのtmfsにもHFS +の要件はありません。説明にはHFSが記載されていますが、説明されている手順はとにかく機能します。
ブレイザーブレード

2

残念ながら、Linuxからまばらなバンドルで物を見つけるためのパスは簡単ではありません。実行できますが、sparsebundleで実際のファイルを見つけるには、Appleがハードリンクに埋め込むiノード情報を解釈する必要があります。このMacWorldのヒントでは、sparsebundle内のハードリンクが実際のファイルに関してどこを指しているのかを把握し、Linuxシステムからアクセスできるようにする方法について説明します。ローカルディスクとして単一のマシンに接続されたTime Machineディスクを処理します。

あなたの場合<mount point>/Backups.backupdb、ほとんどの場合、<machinename>.backupdb`です。

<mount point>/.HFS+ Private Directory Data複数のマシンによるTime Machineバックアップに使用されている共有ディスクの同じ場所に存在するかどうかはわかりません。ls -laそれを見つけるために、ディスクとスパースバンドルを少し検査する必要があります。

しかし、そうでなければ、これらのMacWorldの指示は、LinuxからTime Machineバンドル上のファイルを取得するのに役立ちます。

マウントポイントに関する更新。

更新された質問に基づいて、いくつかの実験を行いました。マウントポイントは*.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のディスクユーティリティによってファイルシステムに変換されてから再共有されると、バックアップ構造を回避するのに問題はありません。OS XシステムなしでLinuxでバンドを処理してファイルシステムを再共有する方法がわかりません。
bmike

@bmike:*.sparsebundleファイルをリモートドライブではなくhfsplusファイルシステムとしてLinuxにマウントしてみてください。Macで.sparsebundleを開き、/Volumes/Time Machine BackupsOS Xでボリュームが作成された場合に起こることと似ています。詳細を回答に更新しました。
イアンC.

Linuxでは、Mac OS Xとは異なり、
スパースバンドル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.