Linux可以安装普通的Time Machine稀疏捆绑磁盘映像目录吗?


30

我正在查看Linux是否可以通过网络共享装载并读取本地存储在Time Capsule中的文件。像这个问题一样,我正在寻找一种至少复制hdiutil只读功能的东西来附加并挂载一个稀疏的捆绑磁盘映像。

由于Time Capsule使用AFPSMB共享,因此SMB的安装很容易,但是我不确定稀疏磁盘束是否可以作为重新构建的HFS +目录安装。

有效的安装命令或指向解析此DMG格式的适当软件包的指针的加分点。

如果不清楚,这是在Terminal中从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

为什么需要“安装”稀疏束?cd一旦将存储Time Machine备份的卷安装在Linux上,Linux应该将其视为目录,并且应该位于该目录中。
伊恩·C,

谢谢Ian C-我编辑了问题以澄清我要寻找的内容-原始数据就在这里,只是没有以更具可读性的格式存储,这对于从特定时间点读取特定文件最有用。
bmike 2011年

Answers:


32

您可以结合使用这两个:

用于读取Mac OS稀疏捆绑磁盘映像的FUSE文件系统

苹果的Time Machine保险丝只读文件系统

第一个使用.sparsebundle格式,将其显示为dmg文件,然后可以像平常一样挂载它。第二个负责Time Machine使用的目录硬链接。


这应该是公认的答案。tmfs在Debian 7.0上为我完美地完成了工作。
戈登·贝利

我感谢@GordonBailey对我执行此操作-我错过了提供另一个答案的通知。
13年

我无法直接将dmg挂载,所以我还必须使用darling-dmg,它通过FUSE挂载了它。
Praxeolitic

4

这是@TorArneVestbø答案的扩展。

安装https://github.com/torarnv/sparsebundlefshttps://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

苹果的Time Machine保险丝只读文件系统

https://github.com/abique/tmfs


4
这个答案的目的是什么?它有什么作用吗?我们是否猜测它甚至可以回答问题?您将需要解压缩此操作的目的是什么,以及它如何解决问题
随机

3

上面来自Alexandre Bicque的帖子提供了一个Linux(?unix)程序,该程序将打开存储在Mac格式的HFS +磁盘或磁盘分区上的Time Machine稀疏集,从而允许在Linux服务器上读取文件。

设置它并不适合胆小的人。它用C ++编写,需要3个C ++库- cmake,FUSE和Boost,具有某些最低版本(可能不是我的Ubuntu Server 10.04的默认最新版本。)它还需要查找并安装g ++编译器和上述库。

我使用Ubuntu服务器10.04,并且不是一个程序员。但是,经过大量的工作和时间,我确实设法安装了所有必需的库,编译并链接了tmfs软件包,并使用了它。它确实可以工作,允许安装TimeMachine Time Capsule。但是,它确实要求在其上写入稀疏映像的磁盘是HFS +磁盘或分区。如果映像是在Linux服务器上的NTFS或ext2 / ext3 / ext4文件系统上写入的,则它将不起作用。

从Apple OS X 10.7(Lion)开始,如果将Time Machine(sparsebundle)映像安装在Windows(smb / Samba)Linux共享上,它将不再起作用,并且必须运行Linux / Unix Netatalk(afpdplus avahi-daemon)服务才能将Linux用作一台Time Machine服务器。

我已经做了很多寻找其他解决方案的工作。我怀疑Linux / Unix C ++程序员会做得比我更好,这扩展了Alexandre Bicque的工作以允许使用ext4或ntfs文件系统。我正在尝试找出方法,但还有很长的路要走。

我认为这将要求我更好地理解保险丝(用户空间文件系统),也许还需要boost::filesystem系统开发帮助者才能前进。


AFAICS,目前对于两个tmfs都不存在HFS +的要求。描述中提到了HFS,但是所描述的步骤仍然有效。
Blaisorblade

2

不幸的是,从Linux中以稀疏方式查找事物的方法并不简单。可以做到,但是需要解释Apple嵌入到硬链接中的一些inode信息,才能在sparsebundle中找到实际文件。此MacWorld提示描述了如何根据实际文件确定稀疏束中的硬链接指向的位置,以便可以从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.sparsebundlebands目录,则会像您一样看到该目录,它是无用的。

但是,如果我安装mymachine.sparsebundle,这样我可以去/Volumes/Time Machine Backups(这就是它在Finder中为自动安装,当我在双击mymachine.sparsebundle)我看到预期的Backups.backupdb目录,并在该日期与时间目录预期。


感谢您的回答,但我没有看到与您相同的文件结构。我没有得到Backups.backupdb,因为它是在band文件中编码的。由于以原始格式枚举该目录需要花费很长时间,因此我运行了a ls | tee /tmp/bands来捕获输出。我有96636个二进制文件,其中大多数大小为8388608。一旦备份结构通过Mac的磁盘实用程序转换为文件系统然后重新共享,我就没问题了。我只是不知道如何在没有OS X系统的情况下在Linux上处理频段,以重新共享文件系统。
bmike 2011年

@bmike:尝试*.sparsebundle在Linux而不是远程驱动器上将文件安装为hfsplus文件系统。类似于在Mac上打开.sparsebundle并最终/Volumes/Time Machine Backups在OS X 上获得一个卷时发生的情况。更新后的答案有更多详细信息。
伊恩·C,

在Linux上,你不能直接安装的sparsebundle文件,不像Mac OS X的
Blaisorblade
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.