Dd'ye alternatif var mı?


14

Kesme, arama ve atlama ile dosyaları okumak ve yazmak için başka hangi araçları kullanmalıyım. DD'nin komut satırı seçenekleri rahatsız edici ve yabancı görünüyor ve yavaş, ama hassas arama modu ( bs=1) ve hızlı, ancak esnek olmayan mod ( bs=4kveya her neyse) arasında seçim yapmaktan hoşlanmıyorum .

31337 konumundan bir dosyadan (veya boru veya soket veya dev) 555 bayt okumak ve bunları 128205 konumundaki (512 + 43 bloklarını kullanarak) kesikli veya kesik olmayan diğer dosyaya yazmak için daha modern araçlar var mı?


2
Hala neyin yanlış olduğunu göremiyorum dd. Arayüzü beğenmezseniz her zaman etrafına bir kabuk komut dosyası sarmalayıcısı koyabilirsiniz. ddPOSIX standardında , ki bu büyük bir artı.
jw013

2
Ana yanlış şey, kesirli blokları arama veya atlayamama. status=noxferVarsayılan olmayan ve bozuk ve ihtiyacım olan ikinci yanlış şey iflag=fullblock(bazı script => kırık veri atlayın).
Vi.

4
1. bs=1=> tüm boru hattı yavaş. Örneğin, tam bir çerçeveden başlayarak video dosyasını dökmek isteyebilirim. 2. "Bazı aritmetik işlem yapar" => onelinerler ve rutin kabuk komutları için çok uygun değildir.
Vi.

1
PSA: dd conv=seek_bytesyapacaktır seekbayt hassasiyetle çalışmalarını.
i336_

1
@ i336_ Bence bu sadece bizim için en güvenli seçenek bir kabuk betiği kullanmaktan kaçınmak ve bağımsız bir statik bağlantılı çalıştırılabilir yazmak anlamına gelir. Sadece alternatifler için alışveriş yapıyordum çünkü zaman zaman çılgın şeylerin doğrudan bash'da mümkün olduğunu duydum ve doğrudan dosya erişiminin bu çılgın şeylerden biri olup olmadığını merak ettim.
Trejkaz

Yanıtlar:


4

Araç var ddrescue(dikkat edin, dd_rescueneredeyse aynı işlevselliğe sahip farklı bir program da var). Kısa seçenekler için tek çizgi ile daha tanıdık sözdizimini veya uzun seçenekler için çift çizgi kullanır. Man sayfasından:

   -i, --input-position=<bytes>
          starting position in input file [0]

   -K, --skip-size=<bytes>
          initial size to skip on read error [64 KiB]

   -M, --retrim
          mark all failed blocks as non-trimmed

   -o, --output-position=<bytes>
          starting position in output file [ipos]

1
ddrescue - --> Infile and outfile are the same., ddrescue /dev/stdin /dev/stdout-> Infile and outfile are the same.. Hikayenin kötü başlangıcı ...
Vi.

Sadece denedim dd_rescue. Dosyanın (stdin) aranamayacağı, ancak devam ettiği konusunda bir uyarı verir. Bir deneyebilirsiniz. Ancak, ddrescuetam özellikli ve olgun hissediyor.
Marco

1
@Vi .: Elçiyi vurma. ddrescuedoğru, borular aranamaz. Bir dosyadaki belirli bir noktada okumaya başlamak istiyorsanız, dosyaya başka bir programdan alınan verilere değil, söz konusu dosyaya erişim izni vermeniz gerekir. Ayrıca, boru kullanmanın en yüksek hız için bu isteğinize karşı savaştığına dikkat edin, çünkü bir boru arayışını taklit etmenin tek yolu işlemek istemediğiniz parçaları okumak ve atmaktır. Gerçek bir dosyada arama yapmak çok daha verimlidir.
Warren Young

Gerçekten de, araç bozuk verileri kurtarmak için tasarlandığından, boru özelliği yoktur . Bir girdi dosyası üzerinden arama esnekliği istediğinizde, ancak sonucu stdout'a aktarmak istediğinizde bu biraz utanç vericidir. Ancak amaçlanan amaç için harika.
Yörüngedeki Hafiflik Yarışları

3

İyi bir alternatif pv. Sadece en verimli blok boyutunu otomatik olarak hesaplamakla kalmaz, aynı zamanda işleri hızlandırır, aynı zamanda diğer şeylerin yanı sıra ilerleme sağlar. Kullanımı basit:

pv < /dev/sda > sda.img

Sıkıştırma ile de iyi oynuyor. Diski tek seferde yedeklemenin ve sıkıştırmanın hızlı bir yolu şöyledir:

pv < /dev/sdb | pigz -9 > disk.img.gz

Burada daha fazla bilgi edinebilirsiniz .


1
Beklenen ana özellik, boru araması olmadığından, pv (boru görünümü) sağlamayan çıktı ve girdi dosyalarında arama yapmaktır.
Vi.

2

dcfldd başka bir dd alternatifidir. OP'nin girdi / çıktı arama esnekliği konusundaki sorusunu ele almaz, ancak google arama yoluyla buraya gelen diğer kullanıcılar için yararlı olabilir.

Aşağıdaki ek özelliklerle gnu dd'yi temel alır:

  • Anında karma - dcfldd giriş verilerini aktarılırken hash edebilir ve veri bütünlüğünü sağlamaya yardımcı olabilir.
  • Durum çıkışı - dcfldd, aktarılan veri miktarı ve ne kadar uzun süre çalışacağı konusunda kullanıcıyı ilerleyişini güncelleyebilir.
  • Esnek disk temizleme bezleri - dcfldd, diskleri hızlı bir şekilde ve istenirse bilinen bir desenle silmek için kullanılabilir.
  • Resim / Silme Doğrulama - dcfldd, bir hedef sürücünün belirtilen girdi dosyası veya modeliyle bit bit eşleşmesi olduğunu doğrulayabilir.
  • Birden çok çıktı - dcfldd aynı anda birden çok dosyaya veya diske çıktı verebilir.
  • Bölünmüş çıktı - dcfldd, bölme komutundan daha fazla yapılandırılabilirliğe sahip çıktıyı birden çok dosyaya bölebilir.
  • Borulu çıktı ve günlükler - dcfldd, tüm günlük verilerini ve çıktılarını komutlara ve yerel olarak dosyalara gönderebilir.
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.