Ubuntu / Linux'ta bir kopyala ve doğrula komutu var mı?


23

Tüm dijital fotoğraflarımı birkaç yere yedekledim. Cp komutunu kullanıyorum, ancak - kişisel değer verildiğinde - daha güvenilir bir yol olup olmadığını merak etmeye başladım. Linux, Bash, Perl, vb. Yabancı değilim, bu yüzden md5 karmalarını kopyalayıp karşılaştıracak bir şeyler yazabilirim, ama zaten bir şey olup olmadığını merak ediyordum (yeniden keşif, tekerlekler ve ne yok).

Googling kopyalarımın çoğu (ve | doğrula | valid | check | hash | confirm) rsync'i açar. Ancak, söyleyebildiğim kadarıyla, rsync sadece bir dosyanın güncellenmesi gerekip gerekmediğini görmek için karma kullanır. Daha sonra bir karma karşılaştırma yapmaz.

Bu kullanım için, özellikle, dosyalar ikilidir ve genellikle 8-10 MB'tır. DIY çözümleri için kamu hizmetleri veya rehberlik için herhangi bir öneri çok takdir edilecektir.


Unison'a ne dersin ? İki yönlü senkronizasyon için kullanılır, ancak bir dosyanın sağlama toplamını kontrol eder.
konik

Yanıtlar:


19

Gönderen man rsyncaltında, -copsiyon:

-c, --checksum: sağlama zamanı, mod-zaman ve büyüklüğe göre atlama

Rsync'nin her zaman aktarılan her dosyanın, dosya aktarılırken oluşturulmuş bir tam dosya sağlama toplamı kontrol ederek alıcı tarafa doğru şekilde yeniden yapılandırıldığını, ancak bu aktarım sonrası otomatik onaylamanın bu seçeneğin yapabileceği bir şey olmadığını doğrulayın. transferden önce "Bu dosyanın güncellenmesi gerekiyor mu?" Kontrol.


7
Bazı insanlar rsync kılavuzunun varsayılan mesaj kopya çekiyle ilgili yanıltıcı olduğunu anladı: unix.stackexchange.com/a/66702/148560 Böyle bir kontrol yok gibi görünüyor. Tüm kopyaları doğrulamak için --checksum seçeneğiyle başka bir rsync yapmanız gerektiğini söylüyorlar.
Rotareti,

5

Birkaç yıl önce seninle aynı talepleri aldım. Seçtiğim çözüm, ZFS'yi depolama sunucumdaki ZFS-FUSE sürücüsü aracılığıyla kullanmaktı. Benim düşüncem, kişisel fotoğraflarımın, taranan belgelerimin ve diğer benzer dosyalarımın, yalnızca ara sıra erişebileceğim şeyler olduğuydu, bu nedenle, bir dosyanın zarar gördüğünü fark etmeden önce, bir yıl ya da daha fazla bir süre söyleyebilir, çok uzun bir zaman olabilir. Bir sürücü hatası veya benzeri.

Bu zamana kadar sahip olduğum tüm yedek kopyalar, dosya (lar) ın bu bit çürük sürümü olabilir.

ZFS, RAID-5'e göre, diskler verileri okurken okuma hatası rapor etmese bile, ayrı disklerde depolanan verilerdeki hataları tespit edip onarabileceği konusunda bir avantajı vardır. Sağlayıcılar vasıtasıyla, disklerden birinin bozuk bilgi döndürdüğünü ve bu diski onarmak için artıklık verilerini kullanacağını algılar.

ZFS'de sağlama toplamı tasarlandığından dolayı, nadiren kullanılan verileri uzun süre saklamak için ona güvenebileceğimi hissettim. Her hafta, tüm verileri gözden geçirip tekrar okuyan ve sağlama toplamlarını doğrulayan bir "zpool scrub" çalıştırıyorum.

ZFS-FUSE, son birkaç yılda benim için oldukça iyi bir performans gösterdi.

Uzak geçmişte, bir müşteri için, belirli bir dizinde depolanan tüm dosyalar üzerinde sağlama toplamı bilgisini saklayan bir veritabanı sistemi kurdum. Daha sonra düzenli aralıklarla çalışacak ve dosyayı veritabanında depolanan sağlama toplamına göre kontrol edecek başka bir komut dosyası vardı. Bununla, bozuk bir dosyayı hızla tespit edip yedeklemelerden geri yükleyebiliriz. Temel olarak, ZFS'nin dahili olarak yaptığı türde kontrolleri uyguluyorduk.


Neden aşağı oy? Yorum bırakılmadığından, "-1, katılmıyorum" olduğunu kabul edeceğim. :-)
Sean Reifschneider

... ama sonra: hangi kısımda anlaşmazlık var? Belki soru için biraz konu dışı olsa da, bu bana sağlam geliyor. Demek ki, aşağı yöndeki oy, bizi yukarıdaki sorudaki bazı gerçek kusurlardan habersiz bırakmak yerine "soruya cevap vermemek" içindi ...
Arjan

Bu sabah farkettim ki, icyrock'un bit-çürüklüğü ile ilgili endişeleri yüzünden sorduğunu sanıyordum. Ama belki bir şekilde farklıdır. Her ne kadar kullanım durumunun ne olacağını hayal edemesem de, dosya içeriğini değiştirmeden dosya içeriğini yasal olarak değiştirirdi.
Sean Reifschneider

OP'nin endişesinin transit yoldaki veri bozulması olduğunu düşünüyorum. Bir dosyayı kopyalarsınız ve kopya orijinalden farklı olur.
Jon Bentley

btrfs? Bu sağlama toplamı vardır ve yerel ...
Dmitry Kudriavtsev


1

İstediğiniz şeyi yapan bu yardımcı programı (Linux ve Windows) buldum (kopyalanmış kopya + log ile doğrulanmış doğrulama): http://sourceforge.net/projects/quickhash/

Yalnızca bir GUI olarak var olmasının tek dezavantajı (komut satırı erişimi yok)

V1.5.0’dan bu yana, seçilen bir kaynak klasör toplanabilir, daha sonra içeriğin tekrar doğrulama için tekrar toplandığı bir hedef klasöre kopyalanabilir ve yeniden oluşturulabilir. 1.5.5'ten beri, seçilen dosya maskeleri de kullanılabilir (* .doc; * .xls vb.).


0

dosyayı yerel olarak kopyalıyorsanız cp( scpvb . yerine atıfta bulunduğunuz gibi), o zaman sadece cmpkaynak ve hedef dosyalar ... ancak gerçekçi, eğer cpbir çeşit hata yaymıyorsa (komut satırında veya icra dönüş değeri), çalışmadığına inanmak için herhangi bir neden yoktur.

Eğer gerçekten yasal olarak yedekleme yapmak istiyorsanız, dropbox gibi uzak bir çözümü düşünün .


+1. Bu cevabın neden tek başına iki komut gerektirse de, soruna tamamen geçerli bir çözüm olmasını (bana göründüğü gibi) sağladığı için neden indirilmediği açık değildir.
Jon Bentley,

Birden fazla dosya ve klasörü hesaba katmadığından, bu cevabı kullanmak için gerçekten bir döngü içeren bir betik yazmanız gerekecektir.
Gringo Suave
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.