Scp tamamlandıktan sonra dosya bozulmasını kontrol etmem gerekir mi?


17

scpKomutu kullanarak birçok dosya ve klasörü tekrar tekrar aktardım :

scp -rp /source/folder myremoteusername@122.10.12.123:/destination/folder

Aktarım tamamlandıktan sonra, tüm dosyaların herhangi bir bozulma olmadan aktarılıp aktarılmadığını kontrol etmem gerekir mi yoksa scpdosyayla ilgileniyor mu (yani, dosyalardan herhangi biri doğru aktarılmazsa bazı hata mesajları görüntüler)?


Stderr'den sıfır dışında bir çıkış durumu scpve buna eşlik eden bir hata mesajı almazsanız , her şeyi doğru ve tamamen kopyalamış olacaktır.
roaima

biraz tl; dr benim yazım: rsynceğer yapabilirsen kullan. Bir işlem bittikten sonra her dosya için doğrulama kopyalar, bu yüzden bunu biraz daha güvenli olmak için kullanmak iyi bir fikirdir.
polemon

Yanıtlar:


24

scpkarşı taraf tarafından gönderilen tüm verileri kopyaladığını doğrular. Aktarımın bütünlüğü kriptografik kanal protokolü ile garanti edilir. Dolayısıyla, aktarımdan sonra bütünlüğü doğrulamanız gerekmez. Karşılaştırma yaptığınız veriler büyük olasılıkla önbellekten okunacağı için bu gereksizdir ve herhangi bir donanım hatasını yakalaması pek olası değildir. Verilerin periyodik olarak doğrulanması yararlı olabilir, ancak aktarım anlamsız olduktan hemen sonra doğrulamak.

Ancak scpbunun bir şeylerin yanlış gittiğini söylemediğinden emin olmanız gerekir . Bir hata mesajı olmalıdır, ancak güvenilir gösterge, scpbir şeyler ters gittiğinde sıfır olmayan bir çıkış kodu döndürür.

Daha doğrusu, scp0 döndürürse dosyanın doğru şekilde iletildiğini bilirsiniz (örn. Başarı durum kodu). Yine de herhangi bir komut çalıştırdığınızda çıkış durumunun 0 olup olmadığını kontrol etmek gerekir. Bir scphata durumu döndürürse veya bir sinyal tarafından öldürülürse veya sistem çalışırken güç kesintisi veya güç kaybettiği için asla ölmezse, hiçbir garantiniz yoktur. Özellikle, scpdosyayı doğrudan son adına kopyaladığından, sistem çökmesi durumunda kısmi bir dosyaya sahip olabileceğiniz anlamına gelir. Kopyalanan parçanın doğru olması garanti edilir, ancak dosya kısaltılabilir.

Daha iyi güvenilirlik için scp yerine rsync kullanın. Aksi belirtilmedikçe, rsync geçici bir dosyaya yazar ve bittikten sonra yerine taşır. Bu nedenle, rsync bir başarı kodu döndürürse, dosyanın var olduğunu ve doğru, tam bir kopya olduğunu bilirsiniz; rsync bir hata kodu döndürmediyse, hiçbir dosya mevcut olmaz (dosyanın daha eski bir sürümü yoksa, bu durumda eski sürüm değiştirilmez).


3

Bir şeyden sonra yolsuzlukla ilgili bir sorunum olmadı, scpancak endişeleniyorsanız, her zaman md5sum <filename>aynı olduklarından emin olmak için her iki sistemde de çalışabilirsiniz .


3

@ David-king'in önerisine göre, bu md5aktarımdan sonra dosyaların bütünlüğünü kontrol etmek için temel bir çözümdür. Bir kez sonra aşağıdaki komutu çalıştırın cdiçin ing /source/foldersonra yerel makinedeki ve bir kez cdiçin ing /destination/folderuzak ana tarih: find . -type f -print0 | xargs -0 -I {} md5sum {} | md5sum. Elde edilen karma başarılı bir aktarımdan sonra aynı olmalıdır.

Güncelleme: ServerFault üzerinde benzer bir soruya verilen bu cevaba göre , dosya bütünlüğünü garanti etmiyorscp( Ayrıntılar için lütfen @Gilles tarafından bu yanıtı kontrol edin ). Dosya karmalarının aktarım sonrası kontrolüne alternatif olarak, rsyncdosyaları aktarmak ve dönüş kodunu kontrol etmek için kullanabilirsiniz .

Güncelleme 2: Aşağıdakiler yalnızca aktarımdan sonra dosyaların ve ilgili boyutların eşleşip eşleşmediğini kontrol eder:find . -type f -print0 | xargs -0 -I {} stat --printf="%n %s\n" {} | sort | md5sum


2
Scp 0 dönerse, o zaman bütünlük olduğunu garanti. Ayrıca, scp 0 döndürmezse, sorun genel yolsuzluk değil, özellikle kısalmadır; dosya boyutunu doğrulamak yeterlidir (hedef dosyanın daha eski bir sürümü yoksa: scp çok erken kesildiyse eski sürüm hala mevcut olabilir). Burada sağlama toplamlarını doğrulamak zaman kaybıdır.
Gilles 'SO- şeytan olmayı bırak'

Fuarı. Cevabımı güncelledim.
Mani M

Temel kusuru düzeltmedin. Denetleme scp'ın dönüş kodu yeterli olduğunu ve karmaları kontrol işe yaramaz.
Gilles 'SO- kötü olmayı bırak'

1
Bile scpdöndürür 0 o dosya sistemi böylece karmaları kontrol şeyi mahvettiğimi olmadığını garanti etmez hala birileri kullanmayı tercih ederseniz hassas verilerin bütünlüğünü kontrol etmek için yararlıdır scpüzerinde rsync.
Mani M
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.