SSHFS est pratique, mais il ne fonctionne pas bien avec rsync ou plus généralement avec les outils de synchronisation.
Le plus gros problème est que SSHFS tue largement les optimisations de performances de rsync. En particulier, pour les fichiers de taille moyenne à grande, lorsque rsync voit qu'un fichier a été modifié, il calcule les sommes de contrôle sur les parties du fichier de chaque côté afin de ne transférer que les parties qui ont été modifiées. Il s'agit d'une optimisation uniquement si la bande passante du réseau est nettement inférieure à la bande passante du disque, ce qui est généralement le cas. Mais avec SSHFS, la bande passante du «disque» est en fait la bande passante du réseau, donc rsync devrait lire le fichier entier afin de déterminer quoi copier. En fait, avec une copie locale (ce qui est le cas, en ce qui concerne rsync, même si l'un des côtés est sur SSHFS), rsync copie simplement tout le fichier.
SSHFS nuit également aux performances s'il existe de nombreux petits fichiers. Rsync doit vérifier au moins les métadonnées de chaque fichier pour déterminer s'il a été modifié. Avec SSHFS, cela nécessite un aller-retour réseau pour chaque fichier. Avec rsync sur SSH, les deux parties peuvent travailler en parallèle et transférer des informations en masse, ce qui est beaucoup plus rapide.
En termes de restrictions d'accès, SSHFS nécessite un accès SFTP, tandis que rsync nécessite la possibilité d'exécuter du code (en particulier, le programme rsync) via un shell. Si l'utilisateur n'a pas de compte shell, il est possible et courant de fournir un compte avec un shell spécial qui ne permet d'exécuter que quelques programmes, y compris sftp-server
et rsync
. Voir Avez-vous besoin d'un shell pour SCP?
Si vous copiez uniquement de nouveaux fichiers et qu'il n'y a pas un très grand nombre de fichiers, il n'y a pas de différence de performances significative.
SSHFS établit une connexion SSH lorsque le système de fichiers est monté et conserve cette connexion jusqu'à ce qu'elle soit démontée. Rsync établit une nouvelle connexion chaque fois que vous l'exécutez, mais vous pouvez utiliser la fonction de multiplexage et la superposition sur une seule connexion principale pour éviter de vous authentifier à chaque fois.
SSHFS est un système de fichiers FUSE et ne prend donc en charge que les métadonnées Unix traditionnelles et ACL. Rsync peut transférer des attributs étendus (vous devez utiliser rsync -aAX
, notez qu'un plain -a
ne conserve que les métadonnées Unix traditionnelles).
rsync --no-whole-file /mounted/file.tar.gz /home/local/file.tar.gz
. Lorsque j'utilisersync
pour cette opération, lors du calcul de la somme de contrôle afin de ne transférer que les parties qui ont été modifiées, faut-rsync
il lire l'intégralité du fichier, ce qui entraînera le téléchargement des données complètes au lieu de seulement sa section mise à jour? @Gillessshfs
connexion? Veuillez consulter: unix.stackexchange.com/q/544404/198423 @GillesPour répondre à votre question principale: oui il y a des différences. Avec
sshfs
une connexion existante pour permettre l'accès aux fichiers distants sur un canal sécurisé et avec rsync sur ssh, ce canal sécurisé est configuré pour communiquer avec une instance rsync distante .Pour répondre à votre question secondaire: Le rsync sur ssh sera plus rapide pour la plupart, sinon toutes les instances, car le rsync sur le système distant fournit plus d'intelligence pour trouver des fichiers qui n'ont pas besoin de synchronisation, mais principalement parce qu'il s'exécute en parallèle avec votre rsync local pour recueillir ces informations.
La sécurité des deux façons est la même, en supposant une configuration similaire des paramètres ssh (longueur de clé, algorithmes). Les valeurs par défaut pour votre système source et de destination dépendent des combinaisons de distributions sur ces systèmes.
la source