Copie de fichiers à l'aide de rsync du serveur distant vers la machine locale

319

Une fois que je suis ssh dans mon serveur distant, quelle serait la commande pour copier tous les fichiers d'un répertoire vers un répertoire local sur ma machine?

markstewie
la source
4
Parce que vous pouvez rsyncdirectement depuis votre machine locale.
Johnsyweb
2
Oh ... oui je peux. Je vois les autres réponses maintenant. Merci.
markstewie
17
C'est une tâche courante pour le développement (web) avec une bonne réponse. Je ne vois pas pourquoi il est toujours fermé.
d.raev
6
Je pense que @ d.raev faisait référence au fait que la question était fermée comme hors sujet (si je me souviens bien, j'ai signalé que cette question serait migrée vers SuperUser, où je pense qu'elle convient mieux) plutôt que qu'il n'y avait pas de réponse acceptée. . Pourtant ... c'était agréable d'avoir ma réponse acceptée après tout ce temps. :-)
Johnsyweb
3
@markstewie pas de mauvais sentiments, c'est une bonne question et cela m'a aidé (semble beaucoup d'autres aussi) mais ce "fermé" donne l'impression de ne pas être digne de confiance alors j'ai l'habitude d'y apporter une certaine attention.
d.raev

Réponses:

575

Depuis votre machine locale:

rsync -chavzP --stats [email protected]:/path/to/copy /path/to/local/storage

Depuis votre machine locale avec un port ssh non standard:

rsync -chavzP -e "ssh -p $portNumber" [email protected]:/path/to/copy /local/path

Ou à partir de l'hôte distant, en supposant que vous voulez vraiment travailler de cette façon et que votre machine locale écoute sur SSH:

rsync -chavzP --stats /path/to/copy [email protected]:/path/to/local/storage

Voir man rsyncpour une explication de mes commutateurs habituels.

Johnsyweb
la source
255
Une explication de la commande: expliquehell.com/…
beefsack
118
Wow, ce site expliquehell est génial.
gosukiwi
2
@cmcdragonkai: en effet, l'hôte local doit exécuter un serveur ssh et être accessible à l'hôte distant. C'est l'une des raisons pour lesquelles je préfère la première solution à la seconde.
Johnsyweb
16
Soyez prudent lors de la synchronisation avec des barres obliques de fin. La commande donnée par Johnnysweb créerait un répertoire appelé copie à l'intérieur /path/to/local/storage. Comme ça /path/to/local/storage/copy. Si c'est ce que vous voulez, c'est génial. Cependant, un scénario plus courant consiste à copier le contenu du répertoire distant dans un répertoire de votre section locale. Ensuite, vous feriez ce /path/to/copy/qui placerait le contenu dans le répertoire /path/to/local/storagesans créer de répertoire de copie local.
chap
16
Je suis venu ici pour une commande rsync et je suis reparti avec expliquehell.com . Merci @beefsack!
Cyphase
49

Si vous avez un accès SSH, vous n'avez pas besoin de SSH d'abord, puis de copier, utilisez simplement Secure Copy (SCP) à partir de la destination.

scp user@host:/path/file /localpath/file

Les caractères génériques sont pris en charge, donc

scp user@host:/path/folder/* /localpath/folder

copiera tous les fichiers distants de ce dossier. Si vous copiez plusieurs répertoires.

note -r copiera également tous les sous-dossiers et le contenu.

Tezyn
la source
6
Pourquoi utiliser scpplutôt que rsync? Vérifiez également que votre shell n'essaie pas de se développer user@host:/path/folder/*, peut-être en utilisant des guillemets simples ( ').
Johnsyweb
Je trouve que scp est plus facile à utiliser depuis la destination .... Il s'agit essentiellement d'une copie de fichier via ssh, mais sans avoir à établir la connexion ssh en premier.
Tezyn
8
Je sais ce que scpc'est, ce n'était pas ma question. Pourquoi n'as-tu pas utilisé rsync? C'est ce que demande la question, ne nécessite pas de session SSH établie et est souvent plus rapide et plus efficace que scp.
Johnsyweb
26
N'oubliez pas que scp suit les liens symboliques au lieu de les copier. Cela peut conduire à copier plus que prévu et à perdre des liens symboliques (ils deviennent des dossiers / fichiers normaux).
Mondane
2
La réponse de Mondane est précisément la raison pour laquelle j'ai trouvé ce post. Normalement, j'utilise scp pour tout, mais je devais conserver les autorisations et les liens symboliques d'un serveur à l'autre. De plus, la différence de vitesse (car mon débutant était définitivement le premier) a été énorme.
kyle