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?
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.
@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.
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.
rsync
directement depuis votre machine locale.Réponses:
Depuis votre machine locale:
Depuis votre machine locale avec un port ssh non standard:
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:
Voir
man rsync
pour une explication de mes commutateurs habituels.la source
/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/storage
sans créer de répertoire de copie local.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.
Les caractères génériques sont pris en charge, donc
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.
la source
scp
plutôt quersync
? Vérifiez également que votre shell n'essaie pas de se développeruser@host:/path/folder/*
, peut-être en utilisant des guillemets simples ('
).scp
c'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 quescp
.