Linux có thể gắn một thư mục hình ảnh đĩa thưa thớt của Time Machine bình thường không?


30

Tôi đang tìm kiếm xem liệu Linux có thể gắn kết và đọc các tệp được lưu trữ trên Time Capsule qua chia sẻ mạng hay không. Giống như câu hỏi này , tôi đang tìm kiếm một cái gì đó sao chép ít nhất chức năng chỉ đọc của hdiutil để đính kèm và sau đó gắn một hình ảnh đĩa bó thưa thớt.

Việc gắn SMB rất dễ dàng vì Time Capsule chia sẻ sử dụng cả AFPSMB , nhưng tôi không chắc chắn gói đĩa thưa có thể được gắn dưới dạng thư mục HFS + được hoàn nguyên.

Điểm thưởng cho lệnh gắn kết hoạt động hoặc con trỏ tới gói thích hợp phân tích định dạng DMG này.

Trong trường hợp không rõ ràng - đây là cách các tệp băng tần nhìn vào tôi khi được gắn từ máy Mac trong Terminal và những gì tôi mong đợi Linux sẽ thấy mà không có khả năng gắn hệ thống tệp thực tế được mã hóa trong vô số tệp băng tần nhị phân.

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

Tại sao bạn cần phải "gắn kết" thưa thớt? Linux sẽ xem nó như một thư mục, chỉ cần cdvào nó một khi khối lượng mà các bản sao lưu Time Machine của bạn đang được lưu trữ được gắn trên Linux.
Ian C.

Cảm ơn Ian C - Tôi đã chỉnh sửa câu hỏi để làm rõ những gì tôi đang tìm kiếm - dữ liệu thô có ở đó, chỉ không được lưu trữ ở định dạng dễ đọc hơn, hữu ích nhất để đọc một tệp cụ thể từ một thời điểm cụ thể.
bmike

Câu trả lời:


32

Bạn có thể sử dụng kết hợp cả hai:

Hệ thống tập tin FUSE để đọc các ảnh đĩa thưa của Mac OS

Hệ thống tập tin chỉ đọc máy Time Time của Apple

Cái đầu tiên quan tâm đến định dạng .spzzybundle, trình bày nó dưới dạng tệp dmg, sau đó có thể được gắn kết như bình thường. Thứ hai chăm sóc các liên kết cứng thư mục được sử dụng bởi Time Machine.


Đây phải là câu trả lời được chấp nhận. tmfsđã hoàn thành công việc cho tôi trên Debian 7.0.
Gordon Bailey

Tôi cảm ơn @GordonBailey vì đã đưa tôi đến vấn đề này - Tôi đã bỏ lỡ thông báo rằng một câu trả lời khác đã được cung cấp.
bmike

Tôi không thể gắn dmg ra khỏi hộp vì vậy tôi cũng phải sử dụng darling-dmg gắn nó qua FUSE.
Praxeolitic

4

Đây là phần mở rộng cho câu trả lời của @ TorArneVestbø.

Khi bạn đã cài đặt https://github.com/torarnv/spudebundlefshttps://github.com/abique/tmfs, bạn cần chạy đoạn script sau trong Bash. Đảm bảo cập nhật hai biến ở đầu là nguồn và đích.

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

Gắn kết cuối cùng sẽ được bạn truy cập (miễn $TM_MNTlà bạn có thể truy cập). Dòng cuối cùng có thể thất bại nếu FUSE không được thiết lập để cho phép người dùng khác, nó cho bạn biết cách khắc phục.

Để ngắt kết nối bạn cần làm như sau:

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"

Điều này đã được thử nghiệm trên hệ thống Fedora 28 và đang hoạt động tốt.


3

Hệ thống tập tin chỉ đọc máy Time Time của Apple

https://github.com/abique/tmfs


4
Mục đích của câu trả lời này là gì? Nó có làm gì không? Có phải chúng ta đoán nó thậm chí trả lời câu hỏi? Bạn sẽ cần giải nén mục đích của việc này là gì và cách khắc phục sự cố
ngẫu nhiên

3

Bài đăng trên, từ Alexandre Bicque, cung cấp chương trình Linux (? Unix) sẽ mở một máy khai thác thời gian được lưu trữ trên đĩa HFS + có định dạng Mac, cho phép đọc các tệp trên máy chủ Linux.

Bắt nó được thiết lập không dành cho những người yếu tim. Nó được viết bằng C ++ và yêu cầu 3 thư viện C ++ - cmake, FUSE và Boost, với các phiên bản tối thiểu nhất định (có thể không phải là phiên bản mới nhất mặc định cho Ubuntu Server 10.04 của tôi.) Nó cũng yêu cầu tìm và cài đặt trình biên dịch g ++ và các thư viện trên.

Tôi sử dụng máy chủ Ubuntu 10.04 và không phải là một lập trình viên. Tuy nhiên, sau một chút công việc và thời gian, tôi đã quản lý để cài đặt tất cả các thư viện cần thiết, biên dịch và liên kết gói tmfs và sử dụng nó. Nó hoạt động, cho phép gắn TimeMachine Time Capsule. TUY NHIÊN, nó yêu cầu đĩa ghi hình ảnh thưa thớt được ghi là đĩa HFS + hoặc phân vùng. Nó sẽ không hoạt động nếu hình ảnh được ghi trên hệ thống tệp NTFS hoặc ext2 / ext3 / ext4 trên máy chủ Linux.

Kể từ phiên bản OS X 10.7 (Lion) của Apple, Time Machine (spzzybundle) sẽ không còn hoạt động nếu được gắn trên chia sẻ Linux của Windows (smb / Samba) và cần phải chạy các dịch vụ Linux / Unix Netatalk ( afpdplus avahi-daemon) để sử dụng Linux như một máy chủ Time Machine.

Tôi đã thực hiện rất nhiều tìm kiếm một giải pháp khác. Tôi nghi ngờ rằng một lập trình viên Linux / Unix C ++ có thể làm tốt hơn tôi, mở rộng công việc của Alexandre Bicque để cho phép sử dụng các hệ thống tệp ext4 hoặc ntfs. Tôi đang cố gắng tìm ra cách để làm điều đó, nhưng còn một chặng đường dài để đi.

Tôi nghĩ rằng nó sẽ yêu cầu tôi hiểu rõ hơn về cầu chì (hệ thống tệp không gian người dùng) và có lẽ những boost::filesystemngười trợ giúp phát triển hệ thống để tiến về phía trước.


AFAICS, hiện không có yêu cầu đối với HFS + tồn tại đối với một trong hai tmfs. Mô tả đề cập đến HFS, nhưng các bước được mô tả sẽ vẫn hoạt động.
Blaisorblade

2

Thật không may, con đường tìm kiếm mọi thứ trong một thưa thớt từ Linux không đơn giản. Nó có thể được thực hiện, nhưng nó đòi hỏi phải diễn giải một số thông tin inode mà Apple nhúng vào các liên kết cứng để tìm tệp thực tế trong spzzybundle. Gợi ý MacWorld này mô tả cách bạn tìm hiểu xem một liên kết cứng trong một thưa thớt chỉ đến các tệp thực tế để bạn có thể truy cập nó từ hệ thống Linux. Nó liên quan đến đĩa Time Machine được gắn dưới dạng đĩa cục bộ vào một máy duy nhất.

Trong trường hợp của bạn <mount point>/Backups.backupdbrất có thể <machinename>.backupdb`.

Tôi không chắc liệu có <mount point>/.HFS+ Private Directory Datatồn tại cùng một vị trí cho một đĩa dùng chung được sử dụng để sao lưu Time Machine bởi nhiều máy hay không. Bạn sẽ phải ls -lakiểm tra một chút về đĩa và đĩa thưa để tìm thấy nó.

Nhưng nếu không, các hướng dẫn MacWorld đó sẽ giúp bạn truy xuất các tệp trên gói Time Machine, từ Linux.

Một bản cập nhật liên quan đến điểm gắn kết.

Tôi đã làm một số thử nghiệm dựa trên câu hỏi cập nhật của bạn. Có vẻ như điểm gắn kết phải là *.sparsebundlethư mục chứ không phải ổ đĩa. Nếu tôi gắn ổ đĩa trong OS X và đi đến /Volumes/Remote Backups/mymachine.sparsebundletôi sẽ thấy bandsthư mục giống như bạn và nó vô dụng.

Nhưng nếu tôi gắn kết mymachine.sparsebundlesao cho tôi có thể truy cập /Volumes/Time Machine Backups(đó là những gì nó tự động gắn kết trong Finder khi tôi nhấp đúp chuột vào mymachine.sparsebundle) Tôi thấy Backups.backupdbthư mục dự kiến và bên dưới thư mục thời gian như mong đợi.


cảm ơn vì câu trả lời, nhưng tôi không thấy cấu trúc tập tin giống như bạn. Tôi không nhận được Backups.backupdb vì nó được mã hóa trong các tệp băng tần. Vì phải mất quá nhiều thời gian để liệt kê thư mục đó ở dạng thô, tôi đã chạy một ls | tee /tmp/bandsđể nắm bắt đầu ra. Tôi có 96636 tệp nhị phân, hầu hết có kích thước 8388608. Tôi không gặp vấn đề gì khi đi xung quanh cấu trúc sao lưu khi nó biến thành một hệ thống tệp bởi tiện ích đĩa của mac và sau đó được chia sẻ lại. Tôi chỉ không thể tìm cách xử lý các băng tần trên linux mà không cần hệ thống OS X để chia sẻ lại hệ thống tệp.
bmike

@bmike: hãy thử gắn *.sparsebundletệp dưới dạng hệ thống tệp hfsplus trên Linux thay vì ổ đĩa từ xa. Tương tự như những gì xảy ra nếu bạn mở .spzzybundle trên máy Mac của bạn và bạn kết thúc với một /Volumes/Time Machine Backupstập trên OS X. Câu trả lời được cập nhật với nhiều chi tiết hơn.
Ian C.

Trên Linux, bạn không thể gắn trực tiếp các tệp
thưa thớt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.