Uzaktan kumandadaki rsync ile monte edilen sshfs'deki rsync local arasındaki farklar?


14

Kaynak / hedef olarak uzak ana bilgisayarla (ssh: //) rsync çalıştırırsam veya bağlı dizini sshfs ile paylaşmak için yerel yolu kullanırsam herhangi bir fark olur mu?

Herhangi bir anahtar kullanımı olmadan güvenlik veya kopyalama hızı açısından farklılıklar olabilir, sadece rsync arşiv modunu ve uzak ana bilgisayar yolunu (ssh) durdurun. Aynı sshfs için sadece kaynak ve hedef ile bağlanır (şifre değişikliği yok, sadece varsayılan).

Yanıtlar:


19

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-serverve 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 -ayalnızca geleneksel Unix meta verilerini koruduğunu unutmayın ).


Örneğin, bağlı SSHFS dizininde tek bir sıkıştırılmış dosya var ve bu dosya yerel dizinime kopyalanır. Daha sonra bu dosya bağlanan dizinde güncelleştirilir ve yalnızca güncellenen bölümünü kullanarak yerel dizinime kopyalamak istiyorum rsync --no-whole-file /mounted/file.tar.gz /home/local/file.tar.gz. rsyncBu işlem için kullandığımda , yalnızca değiştirilen parçaları aktarmak için sağlama toplamının hesaplanması sırasında rsynctüm dosyayı okumalı, bu da yalnızca güncellenen bölümü yerine indirilecek verilerin tamamını yönlendirecek mi? @Gilles
alper

1
@alper sshfs üzerinde rsync kullandığınızda, rsync tüm dosyayı okumalıdır. Aksi takdirde nelerin güncellenmesi gerektiğini bilemez. Sunucuda sağlama toplamlarını hesaplamanın bir yolu olmadığından, yalnızca sağlama toplamlarını aktararak optimizasyon yapmanın bir yolu yoktur.
Gilles 'SO- kötü olmayı bırak'

Hedef konum sshfsbağlantı yerine bağlanmış bir klasörse aynı olur mu? Lütfen bakınız: unix.stackexchange.com/q/544404/198423 @Gilles
alper

5

Ana sorunuza cevap vermek için: evet farklılıklar var. İle sshfsgüvenli kanal kurulduğuna göre, güvenli bir kanal üzerinden ve ssh üzerinden rsync ile uzaktan dosyalara erişim sağlamak için mevcut bir bağlantı yoktur uzaktaki bir rsync örneğine konuşmak .

İkincil sorunuza cevap vermek için: SSH üzerinden rsync, çoğu durumda daha hızlı olacaktır, çünkü uzak sistemdeki rsync, senkronizasyon gerektirmeyen dosyaları bulmak için daha fazla zeka sağlar, ancak öncelikle yerel rsync bu bilgileri toplamak için.

Her iki yolun güvenliği de, ssh parametrelerinin (anahtar uzunluğu, algoritmalar) benzer yapılandırmasının aynı olduğunu varsayar. Kaynak ve hedef sisteminiz için varsayılan değerlerin ne olduğu, bu sistemlerdeki dağıtım kombinasyonlarına bağlıdır.

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.