Öncelikle, sorunuzun "özgeçmiş" kısmıyla ilgili olarak --partial, alıcı uca, gönderim sonu tamamen aktarılmış gibi kaybolursa kısmen aktarılan dosyaları tutmasını söyler.
Dosyaları aktarırken, geçici olarak hedef klasörlerine (örn. .TheFileYouAreSending.lRWzDC) Ya da --partial-diranahtarı ayarlarsanız özel olarak seçilmiş bir klasöre gizli dosyalar olarak kaydedilirler . Bir aktarım başarısız olduğunda ve --partialayarlanmadığında, bu gizli dosya bu şifreli adın altındaki hedef klasörde kalır, ancak --partialayarlanmışsa, dosya TheFileYouAreSendingolsa bile , asıl hedef dosya adıyla yeniden adlandırılır (bu durumda ) tamamlanmadı. Mesele, daha sonra --appendveya ile yeniden rsync çalıştırarak transferi tamamlayabilmenizdir --append-verify.
Yani, --partialgelmez kendisini başarısız veya iptal transferi devam ettirin. Devam etmek için, bir dahaki sefere yukarıda belirtilen bayraklardan birini kullanmanız gerekecek. Bu nedenle, hedefin iyi görünen ancak gerçekte eksik olan dosyaları içermediğinden emin olmanız gerekiyorsa, kullanmamalısınız --partial. Tersine, hedef dizinde gizli olan başıboş hatalı dosyaları asla geride bırakmayacağınızdan emin olmak istiyorsanız ve aktarımı daha sonra tamamlayabileceğinizi biliyorsanız, size --partialyardımcı olmak için var.
--appendYukarıda belirtilen anahtar ile ilgili olarak , bu gerçek "devam" anahtarıdır ve siz de kullanmasanız da kullanmasanız da kullanabilirsiniz --partial. Aslında, kullanırken --append, hiçbir geçici dosya oluşturulmaz. Dosyalar doğrudan hedeflerine yazılır. Bu bakımdan, başarısız bir transferle --appendaynı sonucu verir --partial, ancak bu gizli geçici dosyaları oluşturmadan.
Bu nedenle, özetlemek gerekirse, büyük dosyaları taşıyorsanız ve iptal edilen veya başarısız olan bir rsync işlemini rsyncdurdurulan noktadan devam ettirmek istiyorsanız, bir sonraki denemeyi kullanmanız --appendveya açmanız gerekir --append-verify.
@Alex'in altını işaret ettiği gibi, 3.0.0 sürümü rsyncşimdi, bu anahtarın varlığından önce olduğu --append-verifygibi davranan yeni bir seçeneğe sahip --append. Muhtemelen her zaman davranışını istiyorsun --append-verify, bu yüzden sürümünüzü kontrol edin rsync --version. Eğer Mac kullanıyorsanız ve kullanılmıyorsa rsyncdan homebrew, (en az El Capitan kadar ve dahil) eski bir sürümünü ve kullanmanız gerekir --appendziyade --append-verify. Davranışı neden sürdürmediler --appendve bunun yerine yeni gelenler --append-no-verifybiraz kafa karıştırıcı. Her iki şekilde de, --appendüzerinde rsyncsürüm 3 ile aynıdır önce --append-verifyyeni sürümlerinde.
--append-verifytehlikeli değil: Her iki uçtaki verileri her zaman okuyacak ve karşılaştıracak, sadece eşit olduklarını varsaymayacak. Bunu sağlama toplamı kullanarak yapar, bu nedenle ağda kolaydır, ancak aslında hedefe ekleyerek aktarımı sürdürmeye başlamadan önce kablonun her iki ucundaki paylaşılan veri miktarının okunmasını gerektirir.
İkincisi, "rsync'in kaynak ve hedef arasındaki farkları bulabildiğini ve bu nedenle sadece farkları kopyalayabildiğini" söylediniz.
Bu doğru ve buna delta transferi deniyor, ancak farklı bir şey. Bunu etkinleştirmek için -c, veya ekleyin --checksum. Bu anahtar kullanıldığında, rsync telin her iki ucunda bulunan dosyaları inceler. Bunu parçalarda yapar, her iki uçtaki sağlama toplamlarını karşılaştırır ve eğer farklılarsa, dosyanın sadece farklı kısımlarını aktarır. Ancak, @Jonathan'ın işaret ettiği gibi, karşılaştırma yalnızca dosyalar her iki uçta da aynı boyutta olduğunda yapılır - farklı boyutlar rsync'in tüm dosyayı yüklemesine ve hedefin aynı adın üzerine yazmasına neden olur.
Bu, başlangıçta her iki uçta da bir miktar hesaplama gerektirir, ancak örneğin sık sık küçük değişiklikler içeren çok büyük dosyaları sabit boyutlu dosyaları yedekliyorsanız, ağ yükünü azaltmada son derece verimli olabilir. Akla gelen örnekler, sanal makinelerde veya iSCSI hedeflerinde kullanılan sanal sabit disk görüntü dosyalarıdır.
--checksumHedef sistem için tamamen yeni olan bir toplu iş dosyası aktarmayı kullanırsanız , rsync'nin aktarma işleminden önce kaynak sistemdeki sağlama toplamlarını hesaplaması yine de dikkate değerdir . Neden bilmiyorum :)
Yani, kısacası:
Sık sık sadece bu işlemi iptal edip daha sonra bunu devam ettirmek için seçenek ve istiyoruz "A noktasından B noktasına malzeme taşımak" rsync kullanıyorsanız yok kullanmak --checksum, ama yok kullanın --append-verify.
Sık sık yedeklemek için rsync kullanıyorsanız --append-verify, sürekli boyutta büyüyen ancak nadiren değiştirilen büyük dosyaları gönderme alışkanlığınız olmadığı sürece, muhtemelen sizin için fazla bir şey yapmazsınız. Bonus ipucu olarak, btrfsya da gibi anlık görüntüyü destekleyen depolamaya yedekleme yapıyorsanız zfs, --inplaceanahtarın eklenmesi, değiştirilen dosyalar yeniden oluşturulamadığından ancak değiştirilen blokların doğrudan eskilerin üzerine yazılmasından dolayı anlık görüntü boyutlarını azaltmanıza yardımcı olacaktır. Bu anahtar, yalnızca küçük değişiklikler olduğunda hedefte dosyaların kopyalarını oluşturmaktan kaçınmak istiyorsanız da yararlıdır.
Kullanırken --append-verify, rsync her zaman aynı boyuttaki tüm dosyalarda olduğu gibi davranır. Değişiklik veya diğer zaman damgalarında farklılık gösterirlerse, bu dosyaları daha fazla incelemeden hedefin kaynakla üzerine yazacaktır. --checksumAynı isim ve ebattaki her dosya çiftinin içeriğini (sağlama toplamı) karşılaştıracaktır.
GÜNCELLEME 2015-09-01 @Alex tarafından yapılan puanları yansıtacak şekilde değiştirildi (teşekkürler!)
GÜNCELLEME 2017-07-14 @Jonathan tarafından yapılan puanları yansıtacak şekilde değiştirildi (teşekkürler!)