Birden çok img dosyasını tek döngü aygıtı olarak bağlama


19

Parçalara ayrılmış bir disk img dosyasını almanın ve tek bir döngü aygıtı olarak monte etmenin bir yolu var mı?


1
Nasıl kırılır? Hangi biçim? Bu özel bir biçimse bunun için bir sigorta büyüsü olabilir, ancak yanıtın onları bir araya getirmekten şüpheleniyorum!
Caleb

Cihazın formatıyla 4 konserden daha az dosyalara kısıtlandım. Yine de cihaza root erişimim var. LVM ile yapabileceğim bir şey var mı
MageProspero

Yanıtlar:


16

Yerinde yapabileceğinizi sanmıyorum ama yeterli alanınız varsa bu işe yarayacaktır:

# 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

RAID disklerin, disk sayısının, RAID düzeyinin vb. Depolandığı belirli bir başlığı olduğundan orijinal dosyalardan bir RAID dizisi oluşturamazsınız. Bunu yaparsanız orijinal dosyalarınızın bir kısmının üzerine yazılacaktır.

mdadm --buildMeta veri içermeyen bir dizi oluşturmak için the komutunu kullanabilirsiniz, ancak önce bir yedek oluşturmanız gerekir. Veya salt okunur bağlama yeterliyse:

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

Bunu neden yapmak istiyorsun? Dosya sisteminiz 4GB'tan büyük dosyaları işleyemiyorsa, aklı başında bir dosyaya geçmeniz gerekir.


Cihaz eşleyici ile de yapabilir, ancak yukarıdakiler daha kolaydır.
Wodin

Kabul etmek için çok uzun sürdüğüm için üzgünüm, çok iyi bir cevap.Bunu normal şartlar altında yapmazdım, daha çok bir macera modu sorusu.
MageProspero

2
Muhtemelen kullanmak istiyorum truncateyerine dd(sadece içeren delik olarak FS fiili yazma ama sadece ayırır Inode'u ve işareti dosyasını gerçekleştirmez) çok daha hızlı olduğu gibi.
Maciej Piechotka

Güzel. Bunu bilmiyordum.
stribika

Deneyimden, CrashPlan veya ücretli Google Drive gibi büyük kapasiteli bulut tabanlı yedekleme veya senkronizasyon çözümleri kullanıyorsanız, tek bir büyük dosya yerine küçük bölünmüş dosyaları kullanmak çok, çok iyi bir fikirdir. Başarısız bir dosya indirme durumunda, 100 GB'lık bir şey yerine sadece 1 GB yeniden indirmeniz gerekir.
RAKK

3

Bölünmüş bir disk görüntüsünü (veya bölüm görüntüsünü) monte etmek affuseiçin şu anda burada tutulan afftools'tan kullanmalısınız : https://github.com/sshock/AFFLIBv3

Yani, bir dosyanız varsa, birkaç alt dosyaya bölün 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

o zaman onlara neredeyse 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

(bu, 000 dosyasıyla başlayan tüm dosyaları birleştirir, ardından 001, 002,…)

Ve sonra görüntüyü monte edin

mount -o ro,loop,offset=329043456 /mnt/combine/test_img.000.raw /mnt/test

Kullanım açıklanan burada ve bazı örnekler burada . Derleme ve kurulumdan sonra veya burada bir manpage de mevcuttur .

Not: Benim için affusesadece bölünmüş dosyaların boyutu 512 baytın katlarıysa çalıştı.


4
Bu yöntemi denedim. Büyük bir uyarısı vardır: görüntünüzü salt okunur olarak bağlamanıza izin verir.
RAKK

Sadece yüzlerce dosya binlerce olmadığı sürece harika çalışıyor. Lineer bir baskın bölümü oluşturmak için mdadm'ı kullanmak daha iyi olabilir: unix.stackexchange.com/a/98779/22709
Jay Taylor


0

Bir çözüm için şimdiye kadar bildiğim en yakın şey bir VMware VM oluşturmak. Rescatux veya Knoppix gibi bir Linux canlı CD'si başlatıyorsunuz, ana bilgisayarınızda bir SMB paylaşılan klasörü oluşturuyorsunuz, bu SMB paylaşımını VM'nize bağlıyorsunuz vedd görüntüyü sanal HD'ye yerleştiriyorsunuz. VMware varsayılan olarak disk görüntülerini bölünmüş dosyalar olarak kaydeder, bu nedenle doğrudan bir disk görüntüsünü birden çok dosyaya bölünmüş olarak okumak en yakın şeydir.

Daha sonra, ana bilgisayarınızdan dosyalara erişmek istiyorsanız, görüntüye ikinci bir sanal HD eklemeyi ve dosyaları buraya kopyalamayı deneyebilirsiniz. Daha sonra VM üzerinde bir SMB paylaşımlı klasörü kurar ve ana bilgisayarınızdan bu klasöre bağlanırsınız. Bu şekilde, örneğin, bir iPod Classic (yalnızca fat32'i yırtan) kullanıyorsanız veya akıllı telefonunuzun SD kartını (genellikle sırayla özel bir ROM takmanız gerekir) 4 GB FAT32 dosya sınırını ihlal edebilirsiniz. Harici depolamada Ext3 veya NTFS kullanmak için, Samsung veya Motorola gibi popüler bir üreticiden bir telefona ihtiyacınız var, bu yüzden Çinli bir akıllı telefonunuz varsa güdük).

Kuşkusuz verimli bir çözüm değil, ancak iPod Classic'imde veya stok ROM'lu Samsung akıllı telefonlarda fat32 dışında herhangi bir FS kullanamadığım için sınırlı kaldığım için, Geçmişte ve buna hala etkili bir çözüm bulamıyorum. Hatta kendim yazmak zorunda kalabilirim.

Not: Windows kullanıyorsanız, bunu yapmanın tek yolu olabileceğini belirtmeyi unuttum.


Bu sorunu ziyaret ettiğimden beri biraz zaman geçti. Ona hala sahibim. Ayrıca seninle aynı sebepten var. Kendi özel dosya sistemine sahip bir süreç getirip getiremeyeceğinizi merak ediyorum, dürüst olmak gerekirse bunu denemek isterim. Düğümde yapabileceğimi biliyorum. Tercümanı köklü bir hale getirmede başarılı oldum. Bunun sorununuzu çözüp çözmediğini bilmiyorum. Donanımım samsung galaksilerinde bu iyi. Söyle bana bu sorun için bir şey üzerinde birlikte çalışmak ister misin?
MageProspero

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.