Kopyalanan dosyaların doğruluğunu kontrol edin


14

Bir dahili sabit sürücüden harici bir sürücüye 50+ GB (farklı biçimler dahil 30.000 dosya) dosya diyelim kopyaladıktan sonra, her şeyin doğru kopyalanıp kopyalanmadığını öğrenmenin herhangi bir yolu var mı? Ayrıca, işlemi iptal ederek aramda durursam ve daha sonra işleme devam ederken birleştirme diyelim , doğruluk bir isabet alır mı?

Gibi uygulamaları kullanabilirdim back-in-timeama dosyaları kopyalarken çok seçiciyim ve bir dahaki sefere copyişlemi kullanmak ve mergeyerine söylemek niyetindeyim replace. Çok sayıda dosyayı kopyalarken tavsiye edilir mi?


Yanıtlar:


17

Yedeklemeleri / geri yüklemeleri doğrulamak ve zaman zaman bir RAID dosya sistemi bozulmasını kontrol etmek için hashdeep kullanıyorum .

Hız, kullandığınız karma işlevlerin (bazıları diğerlerinden daha yoğun CPU) ve disklerinizin okuma hızına bağlıdır. Sistemimde hashdeepmd5 ve 300 MB / s okuma hızıyla yaklaşık 1 TB / saat işleyebilir veya doğrulayabilir.


Sağlama toplamlarını hesaplama ve bunları bir dosyaya kaydetme örneği:

cd my-data
hashdeep -rlc md5 . > ~/checksums.txt

Parametreler:

  • r - özyinelemeli
  • l - göreli yollar kullanın
  • c - karma işlevini belirtin
  • . - geçerli dizinde başlayan özyinelemeli
  • > - çıktıyı belirtilen dosyaya yönlendir

Kılavuz sayfasına bakınız .


Sağlama toplamlarını doğrulama ve bir farklar listesi yazdırma örneği:

$ cd /mnt/my-backup
$ hashdeep -ravvl -k ~/checksums.txt .
hashdeep: Audit passed
          Files matched: 40914
Files partially matched: 0
            Files moved: 0
        New files found: 0
  Known files not found: 0

Parametreler:

  • a - denetim (bilinen sağlama toplamları listesiyle karşılaştırın)
  • v- ayrıntılı (uyumsuzlukların bir listesini almak için, çoklu vs daha ayrıntılı demektir)
  • k - bilinen karmaların dosyası

Mart 2016'dan hashdeepitibaren terk edilmiş gibi görünüyor .


14

Rsync için mükemmel bir görev gibi görünüyor . Rsync farkları karşılaştırır ve kopyalar.

Yardımcı rsyncprogram ilk kez sorunuzu görünce aklıma geldi. Aşağıdaki gibi bir şey yapmak, hangi dosyaların dizinde olduğunu aancak içinde olmadığını hızlı bir şekilde gösterebilir b:

$ rsync -rcnv a/* b/

-r will recurse into the directories
-c will compare based on file checksum
-n will run it as a "dry run" and make no changes, but just print out the files 
   that would be updated
-v will print the output to stdout verbosely

Bu iyi bir seçenektir, çünkü dosyaların içeriğini de eşleştiğinden emin olmak için karşılaştırabilirsiniz. rsyncdelta algoritması bu tip kullanım için optimize edilmiştir. Ardından b, içeriğiyle eşleşmek istiyorsanız , gerçek senkronizasyonu gerçekleştirme seçeneğini akaldırabilirsiniz -n.

İlgili bazı sorular:


1
rsync kesinlikle bu iş için bir araçtır, ancak farkları karşılaştırmaz ve kopyalamaz. Boyutları ve karmaları kullanarak dosyaları karşılaştırır.
Justin Force

@JustinForce Boyut mu kullanıyorsunuz? Elbette, farklı boyut, dosyanın tam olarak aynı olmadığından emin olur, ancak rsync çok yönlüdür, tüm dosyaları yeniden okumayı önlemek için isteğe bağlı olarak meta verilere (zaman gibi) güvenebilir. Ağ üzerinden kopyalama yaparken, ortak parçaları aktarmayı önlemek için ince bir şekilde algılamak için bir yuvarlama karması hesaplar, ancak varsayılan olarak karma sürücülerde bu rolü oynamazlar (hiç kullanılıyorsa). Hatta daha kısa bir hedefin zaten doğru içeriğe sahip olduğundan ve yalnızca eklenmesi gerektiğinden emin olmasını isteyebilirsiniz, ancak konuyla ilgili kalalım.
Stéphane Gourichon



0

"Her şey doğru kopyalanmışsa", ben sağlama toplamı (isteğe bağlı olarak xattr saklanır, bu nedenle sadece kaynak için bir kez hesaplanması gerekir) içeren değiştirilmiş bir cp (veya mv) kullanıyorum http://sourceforge.net/projects / crcsum /


1
Cevabınız% 100 doğru olmasına rağmen, yeni bir kullanıcının uygulaması neredeyse imkansızdır. Bu nedenle, lütfen cevabınızı düzenleyin ve cevabınıza nasıl indireceğiniz, derleyeceğiniz, kuracağınız ve kaldıracağınızla ilgili adımları crccpekleyin! ;-) Her zaman cevabınızın altındaki bağlantıyı materyaliniz için bir kaynak olarak bırakabilirsiniz ...
Fabby
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.