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? @Gilles