SSHFS uygundur, ancak rsync veya daha genel olarak senkronizasyon araçları ile iyi bir şekilde örülmez.
En büyük sorun SSHFS'nin rsync'in performans optimizasyonlarını büyük ölçüde öldürmesidir. Özellikle, orta ve büyük boyutlu dosyalar için, rsync bir dosyanın değiştirildiğini gördüğünde, yalnızca değiştirilen parçaları aktarmak için her iki taraftaki dosyanın bölümlerindeki sağlama toplamlarını hesaplar. Bu, yalnızca ağ bant genişliği, genellikle bant bant genişliğinden önemli ölçüde daha küçükse en iyi duruma getirilir. Ancak SSHFS ile, “disk” bant genişliği aslında ağ bant genişliğidir, bu nedenle rsync'in neyin kopyalanacağını belirlemek için tüm dosyayı okuması gerekir. Aslında, yerel bir kopyayla (rsync söz konusu olduğunda, taraflardan biri SSHFS'de olsa bile), rsync sadece tüm dosyayı kopyalar.
SSHFS, çok sayıda küçük dosya varsa performans için de zararlıdır. Rsync'in değiştirilip değiştirilmediğini belirlemek için en azından her dosyanın meta verilerini kontrol etmesi gerekir. SSHFS ile bu, her dosya için bir ağ gidiş dönüşü gerektirir. SSH üzerinden rsync ile, iki taraf paralel olarak çalışabilir ve bilgileri toplu olarak aktarabilir, bu da çok daha hızlıdır.
Erişim kısıtlamaları açısından, SSHFS SFTP erişimi gerektirirken, rsync bir kabuk aracılığıyla kod (özellikle rsync programı) çalıştırma yeteneğini gerektirir. Kullanıcı bir kabuk hesabı yoksa, sadece dahil olmak üzere birkaç programlarını çalıştıran sağlar olduğu özel bir kabuk ile bir hesap yapmak mümkün ve yaygın sftp-server
ve rsync
. Bkz . SCP için bir mermiye mi ihtiyacınız var?
Yalnızca yeni dosyaları kopyalıyorsanız ve çok fazla sayıda dosya yoksa, anlamlı bir performans farkı yoktur.
SSHFS, dosya sistemi kurulduğunda bir SSH bağlantısı kurar ve bağlantısı kaldırılana kadar korur. Rsync, her çalıştırdığınızda yeni bir bağlantı kurar, ancak her seferinde kimlik doğrulamasını önlemek için çoklama özelliğini ve tek bir ana bağlantıda omzunu kullanabilirsiniz .
SSHFS bir FUSE dosya sistemidir ve bu nedenle yalnızca geleneksel Unix meta verilerini ve ACL'yi destekler. Rsync genişletilmiş öznitelikleri aktarabilir (kullanmanız gerekir rsync -aAX
, bir ovanın -a
yalnızca geleneksel Unix meta verilerini koruduğunu unutmayın ).
rsync --no-whole-file /mounted/file.tar.gz /home/local/file.tar.gz
.rsync
Bu işlem için kullandığımda , yalnızca değiştirilen parçaları aktarmak için sağlama toplamının hesaplanması sırasındarsync
tüm dosyayı okumalı, bu da yalnızca güncellenen bölümü yerine indirilecek verilerin tamamını yönlendirecek mi? @Gilles