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는 cdTime Machine 백업이 저장되는 볼륨이 Linux에 마운트되면 디렉토리로 볼 수 있습니다.
Ian C.

감사합니다 Ian C-내가 찾고있는 것을 명확히하기 위해 질문을 편집했습니다. 원시 데이터가 모두 있습니다. 특정 시점에서 특정 파일을 읽는 데 가장 유용한 읽기 쉬운 형식으로 저장되지 않았습니다.
bmike

답변:


32

이 두 가지를 조합하여 사용할 수 있습니다.

Mac OS 스파 스 번들 디스크 이미지를 읽기위한 FUSE 파일 시스템

Apple의 Time Machine 퓨즈 읽기 전용 파일 시스템

첫 번째는 .sparsebundle 형식을 처리하여 dmg 파일로 표시 한 다음 일반처럼 마운트 할 수 있습니다. 두 번째는 Time Machine에서 사용하는 디렉토리 하드 링크를 관리합니다.


이것이 정답입니다. tmfs데비안 7.0에서 완벽하게 작동했습니다.
Gordon Bailey

이 문제를 해결해 주신 @GordonBailey에게 감사드립니다. 다른 답변이 제공되었다는 알림을받지 못했습니다.
bmike

상자에서 dmg를 마운트 할 수 없었기 때문에 FUSE를 통해 마운트 한 darling-dmg도 사용해야했습니다.
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

Apple의 Time Machine 퓨즈 읽기 전용 파일 시스템

https://github.com/abique/tmfs


4
이 답변의 목적은 무엇입니까? 무엇을합니까? 우리는 그것이 질문에 대한 대답조차 추측할까요? 이 경우에도의 목적이 무엇인지 풀고해야하며 문제 해결 방법
무작위

3

Alexandre Bicque의 위의 게시물은 Mac 형식의 HFS + 디스크 또는 디스크 파티션에 저장된 Time Machine 스파 스 번들을 여는 Linux (? unix) 프로그램을 제공하므로 Linux 서버에서 파일을 읽을 수 있습니다.

그것을 설정하는 것은 희미한 마음이 아닙니다. C ++로 작성되었으며 cmake특정 최소 버전 (내 Ubuntu Server 10.04의 기본 최신 버전이 아닐 수도 있음)과 함께 3 개의 C ++ 라이브러리- , FUSE 및 Boost가 필요합니다. 또한 g ++ 컴파일러와 위의 라이브러리를 찾아 설치해야합니다.

나는 우분투 서버 10.04를 사용하고 프로그래머가 아닙니다. 그러나 상당한 시간과 노력 끝에 필자는 필요한 모든 라이브러리를 설치하고 tmfs 패키지를 컴파일 및 링크하여 사용했습니다. TimeMachine Time Capsule을 마운트 할 수 있습니다. 그러나 스파 스 번들 이미지가 기록 된 디스크는 HFS + 디스크 또는 파티션이어야합니다. 이미지가 Linux 서버의 NTFS 또는 ext2 / ext3 / ext4 파일 시스템에 기록 된 경우 작동하지 않습니다.

Apple의 OS X 10.7 (Lion)부터 Windows (smb / Samba) Linux 공유에 마운트 된 경우 Time Machine (sparsebundle) 이미지가 더 이상 작동하지 않으며 Linux / Unix Netatalk ( afpd플러스 avahi-daemon) 서비스를 실행하여 Linux를 다음과 같이 사용해야합니다. Time Machine 서버.

다른 솔루션을 많이 찾았습니다. 나는 Linux / Unix C ++ 프로그래머가 ext4 또는 ntfs 파일 시스템을 사용할 수 있도록 Alexandre Bicque의 작업을 확장하여 나보다 더 잘 할 수 있다고 생각합니다. 나는 그것을하는 방법을 알아 내려고 노력하고 있지만 갈 길이 멀다.

앞으로 나아가려면 퓨즈 (사용자 공간 파일 시스템)와 boost::filesystem시스템 개발 도우미를 훨씬 더 잘 이해해야한다고 생각합니다 .


AFAICS, 현재 HFS +에 대한 요구 사항이 tmf 중 하나에 존재하지 않습니다. 이 설명에서는 HFS를 언급하지만 설명 된 단계는 계속 작동합니다.
Blaisorblade 2016 년

2

불행히도 리눅스에서 스파 스 번들 (sparsebundle)을 찾는 방법은 간단하지 않다. 그것은 할 수 있지만, sparsebundle에서 실제 파일을 찾기 위해 Apple이 하드 링크에 포함하는 일부 inode 정보를 해석해야합니다. 이 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.sparsebundle하면 bands디렉토리가 표시되며 쓸모가 없습니다.

그러나 내가 mymachine.sparsebundle갈 수 있도록 마운트 하면 /Volumes/Time Machine Backups(즉,를 두 번 클릭하면 Finder에서 자동으로 마운트됩니다 mymachine.sparsebundle) 예상 Backups.backupdb디렉토리와 예상 날짜 디렉토리가 표시됩니다.


답변 주셔서 감사합니다,하지만 당신과 같은 파일 구조를 볼 수 없습니다. Backups.backupdb는 밴드 파일 내부에 인코딩되어 있기 때문에 얻지 못합니다. 해당 디렉토리를 원시 형식으로 열거하는 데 시간이 오래 걸리기 때문에 ls | tee /tmp/bands출력을 캡처하기 위해 a 를 실행했습니다 . 96636 이진 파일이 있으며 대부분 8388608 크기입니다. 일단 Mac의 디스크 유틸리티에 의해 파일 시스템으로 바뀌고 다시 공유되면 백업 구조를 돌아 다니는 데 아무런 문제가 없습니다. OS X 시스템이없는 Linux에서 파일 시스템을 다시 공유하는 방법을 처리하는 방법을 알 수 없습니다.
bmike

@bmike : *.sparsebundle원격 드라이브 대신 Linux 에서 파일을 hfsplus 파일 시스템으로 마운트하십시오 . Mac에서 .sparsebundle을 열면 /Volumes/Time Machine BackupsOS X 에서 볼륨 이 생깁니다 . 자세한 내용은 답변을 업데이트했습니다.
Ian C.

Linux에서는 Mac OS X와 ​​달리
스파 스 번들
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.