Réponses:
Oui, utilisez -r
:
scp -rp sourcedirectory user@dest:/path
Note: Ceci crée l’ sourcedirectory
intérieur /path
donc les fichiers seront dans/path/sourcedirectory
-pr
(les options dans l'ordre inverse) ne copiera pas les dossiers, mais leur contenu dans le répertoire cible (apparemment, l'ordre des options est important).
Bien que les réponses précédentes soient techniquement correctes, vous devriez également envisager d'utiliser à la rsync
place. rsync
compare les données des côtés émetteur et récepteur à un mécanisme de différenciation afin d'éviter de renvoyer les données déjà envoyées.
Si vous allez copier quelque chose sur une machine distante plusieurs fois, utilisez rsync
. En fait, il est bon de l'utiliser à rsync
chaque fois, car il comporte plus de contrôles pour la copie des autorisations et de la propriété des fichiers, ainsi que pour l'exclusion de certains fichiers ou répertoires. En général:
$ rsync -av /local/dir/ server:/remote/dir/
va synchroniser un répertoire local avec un répertoire distant. Si vous l'exécutez une seconde fois et que le contenu du répertoire local n'a pas changé, aucune donnée ne sera transférée - ce qui est beaucoup plus efficace que d'exécuter scp
et de tout copier à chaque fois.
En outre, rsync
vous permet de récupérer des transferts interrompus très facilement, contrairement à scp
.
Enfin, les versions modernes de rsync
par défaut fonctionnent sur ssh, donc si cela scp
fonctionne déjà, cela rsync
devrait plutôt être un remplacement immédiat.
rsync
est plus efficace. Une chose qu’il ne fait pas actuellement scp
est de permettre la copie entre des hôtes distants (au moins sans exécuter le client rsync sur l’un d’eux).
-av
: v est pour verbose, a pour archive et est un raccourci vers -rlptgoD qui implique récursive, conserve les dates et les liens du propriétaire des droits. Si vous voulez seulement une utilisation récursive-r
C'est ce que l' -r
option est pour. :)
Voir la page de manuel scp pour plus d'informations si nécessaire.
Option de copie récursive '-r' (minuscule)
scp -r
Ce que je confonds avec l'option de copie récursive locale habituelle '-R' (majuscule)
cp -R
Le meilleur moyen est d'utiliser rsync sur SSH
rsync -a -essh /source/ user@dest-server:/dest/
rsync -a -essh user@source-server:/source/ /dest/
Mes options préférées sont -Pazvessh - Supprimer:
rsync
que j'ai utilisées utiliseraient ssh
par défaut, il -essh
est donc peu probable qu'elles soient nécessaires. Et le choix de commande utilisé pour se connecter à l'hôte distant n'a vraiment aucun rapport avec la copie récursive.
Après avoir recherché l'indicateur de copie récursive et l'avoir utilisée avec succès grâce à ce message, j'aimerais simplement poster une suggestion.
Si c'est le cas, vous copiez (de manière récursive) un répertoire. Peut-être que si les fichiers sont envoyés compressés, vous pourriez gagner du temps lors du transfert
Ce que j'ai fait à la fin était:
local$ tar -czvf local.tar.gz directory/
local$ scp local.tar.gz user@remote:/directory
ssh user@remote
remote$ tar -xzvf local.tar.gz
J'espère que cela t'aides
.tar.gz
soit .tgz
puisque le fichier est une archive tar compressée (car l' -z
indicateur est utilisé).
Vous pouvez copier récursivement un répertoire dans une archive compressée avec cette commande simple:
ssh -p 22 user@address-to-copy-from.com 'cd /parent/directory && tar zcvf - directory_to_copy' > /destination/on/your/machine/archive_name.tgz
Par exemple, pour copier le contenu de /var/log
de domain.com
vers ~/logs.tgz
vous, exécutez:
ssh -p 22 user@domain.com 'cd /var && tar zcvf - log' > ~/logs.tgz
Vous pouvez également extraire des fichiers sur le système cible à l'aide de canaux. Cette commande va copier le contenu de /var/log
at domain.com
sur ~/destination/log
sur votre système:
ssh -p 22 user@domain.com 'cd /var && tar zcvf - log' | tar xzf - -C ~/destination
Bien que pour mettre en miroir un répertoire, vous devriez probablement utiliser rsync
...
Si vous préférez passer le mot de passe de l'utilisateur en tant que paramètre plutôt que de le saisir de manière interactive, vous pouvez utiliser sshpass
( sudo apt-get install -y sshpass
).
Exemple:
sshpass -p 'remote_password' scp -rp /src/folder myremoteusername@122.10.12.123:/dest/folder
Vous pouvez utiliser l'option -r avec la commande scp pour copier des répertoires de manière récursive sur tout système. Si vous avez besoin d’autre chose, reportez-vous au didacticiel de la commande scp . L'option -r est synonyme d'opération récursive dans la plupart des commandes Linux.
-r
option a déjà été suggérée il y a des années et constitue la réponse acceptée.
Une autre option (probablement préférable pour une utilisation répétée) consiste à utiliser NFS - consultez nfs-kernel-server et comment configurer les partages NFS.
scp
mais NFS n'est pas une option.