Dizin içeriğini karşılaştırmak için hızlı bir yol arıyorum. Bir dizinin tamamı için md5sum (veya eşdeğeri sağlama toplamı) yapılabilir mi?
Ubuntu Linux'u Kullanma
Dizin içeriğini karşılaştırmak için hızlı bir yol arıyorum. Bir dizinin tamamı için md5sum (veya eşdeğeri sağlama toplamı) yapılabilir mi?
Ubuntu Linux'u Kullanma
Yanıtlar:
Emin - md5sum directory/*
Biraz daha esnek bir şeye ihtiyacınız varsa (örneğin, dizini yinelemek veya karma karşılaştırması için) md5deep'i deneyin.
apt-get install md5deep
md5deep -r directory
Bir dizin yapısını karşılaştırmak için, ona karşılaştırılacak bir özet listesi verebilirsiniz:
md5deep -r -s /directory1 > dir1hashes
md5deep -r -X dir1hashes /directory2
Bu, dizin2'deki dizin1 ile eşleşmeyen tüm dosyaları çıkarır.
Bu, 1. dizinden kaldırılmış veya dizin2'ye eklenmiş dosyaları göstermez.
-j0
okuyucuyu devre dışı bırakanı kullanın (man sayfasına bakın).
md5deep
ile sudo apt-get install md5deep
ilgili Ubuntu 16.04
ama beni söyler adam sayfasını okumaya çalışırken> md5deep için manuel giriş
İki dizin arasında neyin farklı olduğunu (bir şey varsa) görmek isterseniz, rsync iyi bir seçim olacaktır.
rsync --archive --dry-run --checksum --verbose /source/directory/ /destination/directory
Bu, farklı olan dosyaları listeler.
diff -qr /source/directory/ /destination/directory/
ayrıca farklı dosyaları da gösterirdi.
username@hostname:/destination/directory
Sanırım bunu daha önce bu cevap ile cevapladım:
find . -xtype f -print0 | xargs -0 sha1sum | cut -b-40 | sort | sha1sum
verir: b1a5b654afee985d5daccd42d41e19b2877d66b1
Buradaki fikir, tüm dosyaların her satıra bir tane ayırıp ayırmalarını, sıralamanızı ve tek bir karma elde eden hashları elde etmektir. bu dosyaların isimlerine bağlı değildir.
CFV uygulaması sadece kontrol etmek ve MD5 kontrolü oluşturabilir değil, oldukça yararlıdır, aynı zamanda CRC32, sha1, sel, parite, par2 yapabilirsiniz.
Geçerli dizindeki tüm dosyalar için bir CRC32 sağlama toplamı dosyası oluşturmak için:
cfv -C
Geçerli dizindeki tüm dosyalar için bir MD5 sağlama toplamı dosyası oluşturmak için:
cfv -C -t md5 -f "geçerli dizin.md5sums"
Her alt dizin için ayrı bir sağlama toplamı dosyası oluşturmak için:
cfv -C -r
Tüm alt dizinlerdeki dosyaları içeren bir "süper" sağlama toplamı dosyası oluşturmak için:
cfv -C -rr
Bu askubuntu cevabında açıklandığı gibi, hashdeep kullandım: Kopyalanan dosyaların doğruluğunu kontrol edin :
Sağlama toplamlarını hesaplamak için:
$ cd <directory1>
$ hashdeep -rlc md5 . > ~/hashOutput.txt
Farklılıkları doğrulamak ve listelemek için:
$ cd <directory2>
$ hashdeep -ravvl -k ~/hashOutput.txt .
hashdeep: Audit passed
Input files examined: 0
Known files expecting: 0
Files matched: 13770
Files partially matched: 0
Files moved: 0
New files found: 0
Known files not found: 0
Bu, md5deep'e göre, yeniden adlandırılmış (taşınmış), eklenmiş ve kaldırılmış dosyaları göstermenin yanı sıra, http://www.meridiandiscovery.com/how- / validating-copy-results-using-md5deep için .
Bu benim için çalıştı: (ilgilendiğiniz dizinde iken çalıştırın)
md5deep -rl . | awk '{print $1}' | sort -n | md5sum
Her bir dosya için MD5 toplamları oluşturabilir, bu sağlama toplamlarını alfabetik olarak sıralayabilirsiniz ve bunlara (yeni satırlı veya satırsız) sahip olabilirsiniz. MD5 kriptografik olduğundan, karma sonuçlarıyla iyi çalışmalıdır.
Bazı şeyler için belirli bir düzen olmalıdır, aksi halde eşit direkler için farklı sonuçlar alırsınız.
Ve bu sadece bir olsa bile, tek dir bazı dosyayı ekleyerek tamamen sonucu değişeceğini düşünmelisiniz .directory
ait .DS_Store
dosyada.
Belirli bir durumda, bazı dosyaları dizin1'den dizin2'ye kopyalamak istediğinizi ve ardından bir md5 karşılaştırması kullanarak başarılı bir kopya doğrulamak istediğinizi varsayalım.
İlk. cd dizinine1 ve yazın:
find -type f -exec md5sum "{}" \; > ~/Desktop/md5sum.txt
Bu, directory1'deki her dosya için bir md5 toplamı içeren bir referans dosyası oluşturacaktır. Bu yapıldıktan sonra, tek yapmanız gereken cd dizinine2 ve şunu yazın:
md5sum -c ~/Desktop/md5sum.txt
Md5sum programı, her yolu md5sum.txt dosyasından alır, o dosyanın md5sum değerini hedef klasörde hesaplar ve sonra dosyayı dosyada depoladığı toplamla karşılaştırır.
İşlem tamamlandıktan sonra, 'Yani çok fazla dosya eşleşmedi' veya bunun gibi bir özeti alacaksınız.
Çok sayıda dosya içeren ve MassHash adlı bir komut satırı programı yazarak yedeklerin / aynaların bütünlüğünü doğrulamaya ihtiyacım vardı. Python ile yazılmış. Bir GTK + Launcher de mevcuttur. Kontrol etmek isteyebilirsiniz...