Linux สามารถเมานต์ไดเร็กทอรีอิมเมจดิสก์แบบกระจายแบบกระจัดกระจาย Time Machine ได้หรือไม่?


30

ฉันกำลังมองหาเพื่อดูว่า Linux สามารถเชื่อมต่อและอ่านไฟล์ที่เก็บไว้ใน Time Capsule ผ่านเครือข่ายที่ใช้ร่วมกันได้หรือไม่ เช่นเดียวกับคำถามนี้ฉันกำลังมองหาบางสิ่งที่จำลองอย่างน้อยฟังก์ชั่นการอ่านอย่างเดียวของhdiutilเพื่อแนบแล้วเมานดิสก์อิมเมจมัดแบบกระจัดกระจาย

การเมานต์ SMB นั้นง่ายเนื่องจาก Time Capsule ใช้ร่วมกันทั้งAFPและSMBแต่ฉันไม่แน่ใจว่าสามารถติดตั้งบันเดิลดิสก์แบบกระจัดกระจายเป็นไดเร็กทอรี HFS + ที่สร้างขึ้นใหม่ได้

คะแนนโบนัสสำหรับคำสั่งเมานต์หรือตัวชี้การทำงานไปยังแพ็คเกจที่เหมาะสมที่แยกวิเคราะห์รูปแบบ DMG นี้

ในกรณีที่มันไม่ชัดเจน - นี่คือวิธีที่ไฟล์ band มองมาที่ฉันเมื่อติดตั้งจาก Mac ใน Terminal และสิ่งที่ฉันคาดหวังให้ลินุกซ์เห็นโดยไม่สามารถเมานต์ระบบไฟล์จริงที่เข้ารหัสในไฟล์ไบนารีแบนด์จำนวนมาก

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

ทำไมคุณต้อง "ติดตั้ง" sparsebundle Linux ควรเห็นว่ามันเป็นไดเรกทอรีเพียงแค่cdเข้าไปในโวลุ่มที่ซึ่งข้อมูลสำรอง Time Machine ของคุณถูกจัดเก็บถูกเมาท์บน Linux
เอียนซี

ขอบคุณ Ian C - ฉันแก้ไขคำถามเพื่อชี้แจงสิ่งที่ฉันกำลังหา - ข้อมูลดิบอยู่ที่นั่นเพียงแค่ไม่ได้เก็บไว้ในรูปแบบที่อ่านได้มากขึ้นซึ่งมีประโยชน์มากที่สุดสำหรับการอ่านไฟล์เฉพาะจากจุดที่ระบุในเวลา
bmike

คำตอบ:


32

คุณสามารถใช้ทั้งสองอย่างนี้ร่วมกัน:

ระบบไฟล์ FUSE สำหรับการอ่านอิมเมจดิสก์แบบกระจายบน Mac OS

ฟิวส์ Time Machine ของ Apple อ่านได้เฉพาะระบบไฟล์

อันดับแรกจะดูแลรูปแบบ. sparsebundle โดยแสดงเป็นไฟล์ dmg ซึ่งสามารถเมาต์ได้ตามปกติ อันดับที่สองดูแลฮาร์ดไดรฟ์ไดเรกทอรีที่ใช้โดย Time Machine


นี่ควรเป็นคำตอบที่ยอมรับได้ tmfsทำงานให้ฉันอย่างสมบูรณ์แบบบน Debian 7.0
Gordon Bailey

ฉันขอบคุณ @GordonBailey ที่ส่งฉันมาที่นี่ - ฉันพลาดการแจ้งเตือนว่ามีคำตอบอื่นให้
bmike

ฉันไม่สามารถเมานต์ dmg ออกจากกล่องได้ดังนั้นฉันต้องใช้ที่รัก - dmg ซึ่งติดตั้งผ่าน FUSE
Praxeolitic

4

นี่เป็นส่วนขยายของคำตอบโดย @ 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 และทำงานได้ดี


3

ฟิวส์ Time Machine ของ Apple อ่านได้เฉพาะระบบไฟล์

https://github.com/abique/tmfs


4
จุดประสงค์ของคำตอบนี้คืออะไร มันทำอะไรเลยเหรอ? เราต้องคาดเดาว่าจะตอบคำถามได้หรือไม่ คุณจะต้องแกะสิ่งที่เป็นจุดประสงค์ของสิ่งนี้ออกมาและวิธีแก้ปัญหา
สุ่ม

3

โพสต์ด้านบนจาก Alexandre Bicque จัดเตรียมโปรแกรม Linux (? unix) ที่จะเปิด Time sparsebundle ที่จัดเก็บไว้ในดิสก์ HFS + หรือพาร์ติชันดิสก์ที่ฟอร์แมตด้วย Mac เพื่อให้สามารถอ่านไฟล์บนเซิร์ฟเวอร์ Linux ได้

การติดตั้งไม่ได้สำหรับคนใจเสาะ มันเขียนใน C ++ และต้องการไลบรารี 3 C ++ - cmake, FUSE และ Boost พร้อมกับรุ่นขั้นต่ำบางอย่าง (ซึ่งอาจไม่ใช่เวอร์ชันล่าสุดสำหรับ Ubuntu Server 10.04 ของฉัน) นอกจากนี้ยังต้องการการค้นหาและติดตั้งคอมไพเลอร์ g ++ และไลบรารี่ด้านบน

ฉันใช้เซิร์ฟเวอร์ Ubuntu 10.04 และฉันเป็นโปรแกรมเมอร์ไม่มาก อย่างไรก็ตามหลังจากทำงานและเวลาได้พอสมควรฉันก็จัดการติดตั้งไลบรารีที่จำเป็นทั้งหมดรวบรวมและเชื่อมโยงแพ็คเกจ tmfs และใช้งานได้ มันใช้งานได้ช่วยให้ติดตั้ง TimeMachine Time Capsule อย่างไรก็ตามมันต้องการดิสก์ที่เขียนอิมเมจ sparsebundle เป็นดิสก์ HFS + หรือพาร์ติชัน มันจะไม่ทำงานหากภาพถูกเขียนบนระบบไฟล์ NTFS หรือ ext2 / ext3 / ext4 บนเซิร์ฟเวอร์ Linux

ในฐานะของ Apple OS X 10.7 (Lion) รูปภาพ Time Machine (sparsebundle) จะไม่ทำงานอีกต่อไปหากติดตั้งบน Windows (smb / Samba) แบ่งปัน Linux และจำเป็นต้องเรียกใช้บริการ Linux / Unix Netatalk ( afpdบวกavahi-daemon) เพื่อใช้ Linux เป็น เซิร์ฟเวอร์ Time Machine

ฉันทำหลายวิธีเพื่อหาทางออกอื่น ฉันสงสัยว่าโปรแกรมเมอร์ Linux / Unix C ++ สามารถทำได้ดีกว่าฉันโดยขยายงานของ Alexandre Bicque เพื่ออนุญาตให้ใช้ระบบไฟล์ ext4 หรือ ntfs ฉันพยายามที่จะคิดออกว่าจะทำอย่างไร แต่มีทางยาวไป

ฉันคิดว่ามันจะต้องให้ฉันเข้าใจฟิวส์ (ระบบไฟล์พื้นที่ผู้ใช้) ได้ดีขึ้นและบางทีผู้boost::filesystemพัฒนาระบบอาจจะก้าวไปข้างหน้า


AFAICS ปัจจุบันไม่มีข้อกำหนดสำหรับ HFS ​​+ สำหรับ tmfs ใด ๆ คำอธิบายกล่าวถึง HFS แต่ขั้นตอนที่อธิบายไว้จะใช้ได้ต่อไป
Blaisorblade

2

น่าเสียดายที่เส้นทางในการค้นหาสิ่งต่าง ๆ ใน sparsebundle จาก Linux นั้นไม่ตรงไปตรงมา สามารถทำได้ แต่ต้องมีการตีความข้อมูลไอโหนดบางอย่างที่ Apple ฝังในฮาร์ดลิงก์เพื่อหาไฟล์จริงใน sparsebundle คำใบ้ MacWorld นี้อธิบายวิธีที่คุณใช้ในการหาจุดที่ฮาร์ดลิงก์ใน sparsebundle ชี้ไปในแง่ของไฟล์จริงเพื่อให้คุณสามารถเข้าถึงได้จากระบบ 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ไดเรกทอรีที่คาดหวังและภายใต้ไดเรกทอรีวันที่ตามที่คาดไว้


ขอบคุณสำหรับคำตอบ แต่ฉันไม่เห็นโครงสร้างไฟล์เดียวกับคุณ ฉันไม่ได้รับ Backups.backupdb เนื่องจากมีการเข้ารหัสไว้ในไฟล์แบนด์ เนื่องจากใช้เวลานานในการระบุไดเร็กทอรีนั้นในรูปแบบ raw ฉันจึงรัน a ls | tee /tmp/bandsเพื่อดักจับเอาต์พุต ฉันมีไฟล์ไบนารี 96636 ซึ่งส่วนใหญ่เป็นขนาด 8388608 ฉันไม่มีปัญหาเรื่องโครงสร้างการสำรองข้อมูลเมื่อมันกลายเป็นระบบไฟล์โดยยูทิลิตี้ดิสก์ของ mac แล้วแชร์อีกครั้ง ฉันไม่สามารถคิดวิธีการประมวลผลแบนด์บน linux ที่ไม่มีระบบ OS X เพื่อแชร์ระบบไฟล์อีกครั้ง
bmike

@bmike: ลองติดตั้ง*.sparsebundleไฟล์เป็นระบบไฟล์ hfsplus บน Linux แทนไดรฟ์ระยะไกล คล้ายกับสิ่งที่เกิดขึ้นหากคุณเปิด. sparsebundle บน Mac ของคุณและคุณจะจบลงด้วย/Volumes/Time Machine Backupsโวลุ่มบน OS X คำตอบที่อัปเดตพร้อมรายละเอียดเพิ่มเติม
เอียนซี

บน Linux คุณไม่สามารถเมานท์ไฟล์ sparsebundle ได้โดยตรงซึ่งแตกต่างจาก Mac OS X
Blaisorblade
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.