Rsync sur ssh, ou autre chose?

10

J'ai essayé d'utiliser rsync sur OSX vers Linux ou Unix box sur lequel je n'ai pas beaucoup de contrôle. J'ai fait quelque chose comme ça

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /this/dir/ 

L'erreur retournée est:

bash: rsync: commande introuvable rsync: connexion inopinément fermée (0 octet reçu jusqu'à présent) [récepteur] erreur rsync: commande à distance introuvable (code 127) dans /SourceCache/rsync/rsync-37.3/rsync/io.c(452 ) [récepteur = 2.6.9]

Cependant, après avoir lu les documents, je commence à penser que j'aurais réellement besoin d'installer un démon rsync sur l'hôte distant.

  1. Dois-je installer un serveur rsync sur l'hôte distant?
  2. Alternatives gratuites - GUI ou non-GUI - qui ne nécessitent rien d'installer sur l'hôte distant ?

Merci!

Dan Rosenstark
la source
1
Quels sont les problèmes exacts que vous rencontrez avec votre commande actuelle?
fideli
@fideli, désolé, j'ai oublié ça. Modification de la question maintenant
Dan Rosenstark
1
Merci pour cette question, mais pouvez-vous l'étiqueter s'il rsyncvous plaît?
Andrew Grimm

Réponses:

21

Vous avez besoin d'une commande rsync sur le serveur, mais vous n'avez pas besoin d'exécuter un démon.

Obtenez un binaire rsync qui fonctionne sur le serveur, mettez - le quelque part dans votre maison, et ajouter ce drapeau à votre ligne de commande: --rsync-path=/home/user/path/to/rsync.

Si vous ne souhaitez pas copier rsync sur les serveurs, vous pouvez utiliser scp ou sshfs.

sshfs user@host ~/sync/user-host
rsync -av ~/local-dir ~/sync/user-host/remote-dir

Dans ce cas, rsync s'exécutera complètement localement, mais les modifications seront propagées au serveur.

Tobu
la source
J'aime beaucoup cette solution, en particulier parce que le serveur est un plan d'hébergement bon marché sur GoDaddy et je doute que je puisse exécuter rsync sur le serveur. +1 pour l'instant!
Dan Rosenstark
Quelle est la voie la plus simple à suivre pour installer sshfs sur OSX? MacFuse ou y a-t-il quelque chose de plus simple?
Dan Rosenstark
MacFuse + (MacFusion ou sshfs-static-leopard), je pense (je ne suis pas un utilisateur OSX)
Tobu
Oui, MacFuse le fait. Juste que la page de téléchargement du binaire sshfs vous donne le binaire avec une extension .gz. Vous devez donc le renommer au lieu de le flipper. Ennuyeux mais d'accord maintenant! Merci
Dan Rosenstark
6

Vous devez avoir rsync sur l'hôte distant - pas nécessairement un serveur rsync (qui, je crois, ne gérera pas la connexion SSL de toute façon), mais rsync sur la boîte locale doit parler à un rsync sur la boîte distante. Vous utilisez ssh pour lier les deux.

En supposant que rsync existe sur la boîte distante, il ne se trouve pas dans le chemin de recherche par défaut pour votre shell connecté ssh. En fonction de vos préférences et autorisations sur le boîtier distant, vous pouvez essayer

  • en utilisant l'option --rsync-path =
  • changer le PATH par défaut pour votre shell ssh distant
  • ajout d'un alias pour rsync dans le shell ssh distant
  • modification de la commande à distance exécutée en chemin absolu vers rsync

ou quelque chose de similaire. Si rsync en tant qu'exécutable (vice-serveur) n'existe pas sur l'hôte distant, il faudrait l'ajouter.

mpez0
la source
Cela a été utile, alors +1, mais je me demande comment spécifier le répertoire de démarrage de rsync du côté Windows si je l'exécute de Mac à PC comme ceci: superuser.com/questions/1462861/…
Ryan
1

Il n'y a pas grand intérêt à utiliser rsync sans exécuter un démon rsync sur l'hôte distant, malgré la solution sshfs créative proposée ci-dessus. L'idée globale de l'efficacité dans rsync est que les deux instances comparent leurs copies locales de l'ensemble de données en calculant les sommes de contrôle localement, en les comparant sur le réseau et en ne transmettant que les données réelles pour les parties de ces fichiers qui diffèrent réellement.

Si vous utilisez sshfs ou tout montage réseau, cela ne fait que masquer le fait qu'il doit copier l'ensemble de données sur le réseau depuis l'hôte distant afin de calculer les sommes de contrôle localement, puis transmettre les différences en plus de cela. Il serait plus rapide et moins cher de tout supprimer localement et de «scp -r» le lot.

énorme
la source
3
Pas exactement, car rsync vérifie si les fichiers sont modifiés en fonction de la taille et de l'horodatage, et c'est toujours beaucoup plus efficace que de scanner tous les fichiers. Mais en effet, le mécanisme de mise à jour incrémentielle rsync dans les fichiers n'a pas de sens sur sshfs.
Jaap Eldering
0

Essayez SCP . Comme vous avez déjà un accès ssh, vous n'avez pas besoin d'installer autre chose sur l'hôte distant :)

Pour copier des fichiers de l'hôte distant vers l'hôte local, utilisez:

# scp -R remoteuser@remotehost:/remote/dir /this/dir/ 

Ou copiez les fichiers de l'hôte local vers l'hôte distant avec:

# scp -R /this/dir remoteuser@remotehost:/remote/dir 
lyarwood
la source
1
Merci Lee, SCP est génial mais il ne fait pas de "synchronisation" non?
Dan Rosenstark
1
ce doit être un petit "r":scp -r
0x4a6f4672