Có cách nào để lấy một tập tin img đĩa được chia thành các phần và gắn kết nó như một thiết bị lặp không?
Có cách nào để lấy một tập tin img đĩa được chia thành các phần và gắn kết nó như một thiết bị lặp không?
Câu trả lời:
Tôi không nghĩ rằng bạn có thể làm điều đó tại chỗ nhưng nếu bạn có đủ không gian thì điều này sẽ hoạt động:
# Create the files that will hold your data
dd if=/dev/zero of=part-00 bs=1M count=4k
dd if=/dev/zero of=part-01 bs=1M count=4k
# Create the loop devices
losetup /dev/loop0 part-00
losetup /dev/loop1 part-01
# Create a RAID array
mdadm --create /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
# Copy the original filesystem
dd if=original-file-00 of=/dev/md0 bs=512
# Look at the records written value
dd if=original-file-01 of=/dev/md0 bs=512 seek=<sum of records written values so far>
# Mount the new filesystem
mount /dev/md0 /mnt
Bạn không thể đơn giản tạo một mảng RAID từ các tệp gốc vì các đĩa RAID có một tiêu đề cụ thể nơi lưu trữ số lượng đĩa, cấp độ RAID, v.v. Nếu bạn làm điều đó, một phần của các tập tin gốc của bạn sẽ bị ghi đè.
Bạn có thể sử dụng mdadm --build
để tạo một mảng không có siêu dữ liệu nhưng sau đó bạn thực sự nên tạo một bản sao lưu trước. Hoặc nếu gắn kết chỉ đọc là đủ:
losetup -r /dev/loop0 original-00
losetup -r /dev/loop1 original-11
mdadm --build /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
mount /dev/md0 /mnt
tại sao bạn muốn làm việc này? Nếu hệ thống tệp của bạn không thể xử lý các tệp> 4GB, bạn chỉ nên chuyển sang một tệp lành mạnh.
truncate
thay vì dd
nó nhanh hơn nhiều (nó không thực hiện ghi thực tế cho FS mà chỉ phân bổ các nút và đánh dấu tệp như chỉ chứa lỗ).
Để gắn hình ảnh đĩa chia (hoặc hình ảnh phân vùng), bạn nên sử dụng affuse
từ các afftools hiện đang được duy trì tại đây: https://github.com/sshock/AFFLIBv3
Vì vậy, nếu bạn có một tệp, hãy chia thành nhiều tệp con test_img.000, test_img.001, test_img.002, test_img.003, test_img.004, test_img.005, test_img.006, test_img.007, test_img.008, test_img.009
sau đó bạn có thể tham gia với họ hầu như với affuse
# affuse test_img.000 /mnt/combine
# ls -lh /mnt/combine
total 0
-r--r--r-- 1 root root 2.0G 1969-12-31 16:00 test_img.000.raw
(điều này kết hợp tất cả các tệp lại với nhau bắt đầu bằng tệp 000, sau đó 001, 002, Bằng)
Và sau đó gắn hình ảnh
mount -o ro,loop,offset=329043456 /mnt/combine/test_img.000.raw /mnt/test
Việc sử dụng được mô tả ở đây và một số ví dụ ở đây . Một manpage cũng có sẵn sau khi biên dịch và cài đặt, hoặc ở đây .
PS: Đối với tôi affuse
chỉ hoạt động nếu các tệp phân tách có kích thước là bội số của 512 byte.
Bạn có thể viết phần mở rộng thiết bị lưu trữ khối của riêng bạn (nghĩ về phần mở rộng giống như cầu chì) và thực hiện tìm kiếm phụ thuộc vào địa chỉ.
Tại đây bạn có thể tìm thấy ví dụ về cách sử dụng cầu chì https://github.com/libfuse/python-fuse/blob/master/example/hello.py
Điều gần nhất mà tôi biết cho đến nay đối với một giải pháp là tạo ra VMware VM. Bạn khởi động một đĩa CD trực tiếp Linux như Rescatux hoặc Knoppix, bạn tạo một thư mục chia sẻ SMB trên máy tính chủ của mình, bạn gắn chia sẻ SMB đó trên máy ảo của mình và sau đó dd
đưa hình ảnh vào HD ảo. VMware theo mặc định lưu hình ảnh đĩa của nó dưới dạng tệp chia, vì vậy đây là cách gần nhất để đọc trực tiếp hình ảnh đĩa được chia thành nhiều tệp.
Sau đó, nếu bạn muốn truy cập các tệp từ máy tính chủ của mình, bạn có thể thử thêm HD ảo thứ hai vào hình ảnh và sao chép các tệp ở đó. Sau đó, bạn thiết lập thư mục chia sẻ SMB trên VM và kết nối với nó từ máy chủ của bạn. Ví dụ, bằng cách này, bạn có thể vi phạm giới hạn tệp 4 GB của FAT32 trong trường hợp bạn đang sử dụng iPod Classic (chỉ sử dụng fat32) hoặc thẻ SD của điện thoại thông minh của bạn (thông thường bạn phải cài đặt ROM tùy chỉnh theo thứ tự để sử dụng Ext3 hoặc NTFS trên bộ nhớ ngoài, vì điều này bạn cần có điện thoại từ một nhà sản xuất nổi tiếng như Samsung hoặc Motorola, vì vậy nếu bạn có điện thoại thông minh Trung Quốc, bạn sẽ bị vấp ngã).
Tuy nhiên, đây không phải là một giải pháp hiệu quả, nhưng vì tôi đã bị hạn chế do không thể sử dụng bất kỳ FS nào ngoài fat32 trên iPod Classic hoặc điện thoại thông minh Samsung của tôi với ROM stock, tôi đã truy quét gần như toàn bộ internet trong quá khứ và vẫn không thể tìm thấy một giải pháp hiệu quả cho việc này. Tôi thậm chí có thể phải tự viết nó.
PS: Quên đề cập rằng, nếu bạn đang ở trên Windows thì đây có thể là cách duy nhất để làm điều này.
Trong BSD, bạn có thể sử dụng tùy chọn hợp nhất để gắn kết. Trong Linux, bạn có thể dùng thử unionFS.