dd
ya da başka bir uygulama muhtemelen düşündüğünüz anlamda “bir tür yerleşik doğrulama” içermez: yazılanlarla karşılaştırmak için depolama ortamındaki verileri geri okumaz. İşletim sisteminin işi budur.
Bir uygulamadan donanıma doğru bir okuma-doğrulama yapmak gerçekten mümkün değildir. Bazı senaryolarda işe yarar, ancak çoğu durumda hiçbir şey başaramaz. Uygulama, doğrudan bir depolama ortamına yazıyorsa yazdıklarını okuyabilir, ancak bu genellikle bellekte bir önbellekten geri döner ve bu da yararlı bir güvence vermez. Gelen sen alıntı Örneğin , dd
bir boruya yazıyor ve bu durumda hat altındaki verilere ne üzerinde hiçbir kontrolü yoktur. Rsync örneğinizde,rsync --checksum
anlamsızdır: teoride bir hata yakalayabilir, ancak pratikte bir hata olursa, ikinci geçiş muhtemelen yanlış bir şey bildirmez, bu yüzden gerçekten yararlı bir güvence vermeyen bir şey için çaba harcıyorsunuz.
Ancak, uygulamalar yapmak onlar işletim sistemi verileri için kabul edilen sorumluluğa sahip olduğunu doğrulamak anlamda, verilere ne doğrulayın. Tüm sistem çağrıları bir hata durumu döndürür. Bir sistem çağrısı bir hata durumu döndürürse, uygulama genellikle bir hata mesajı görüntüleyerek ve sıfır dışında bir çıkış durumu döndürerek bu hatayı kullanıcıya yayar.
Bunun dd
bir istisna olduğuna dikkat edin : komut satırı parametrelerine bağlı olarak dd
bazı hataları göz ardı edebilir . Bu son derece alışılmadık bir durumdur: dd
bu özelliğe sahip tek komuttur. cat
Bunun yerine kullanın dd
, bu şekilde yolsuzluk riski yoktur ve daha hızlı olabilir .
Veri kopyalama zincirinde iki tür hata ortaya çıkabilir.
- Yolsuzluk: aktarım sırasında biraz ters çevrilir. Bunu uygulama düzeyinde doğrulamanın bir yolu yoktur, çünkü bu gerçekleşirse, geri okuma sırasında aynı bozulmaya neden olma olasılığı yüksek olan bir programlama hatası veya donanım hatasından kaynaklanır. Böyle bir bozulmanın olmadığını doğrulamanın tek yararlı yolu, ortamın bağlantısını kesip RAM ile ilgili bir sorun olması durumunda tercihen farklı bir bilgisayarda yeniden denemektir.
- Kesme: kopyalanan tüm veriler doğru bir şekilde kopyalandı, ancak bazı veriler hiç kopyalanmadı. Bu seferki ise değer komutunun karmaşıklığına bağlı olarak, bazen kontrol ediyorum. Bunu yapmak için verileri okumanıza gerek yok: sadece boyutunu kontrol edin.