Réponses:
Oui, utilisez -r:
scp -rp sourcedirectory user@dest:/path
Note: Ceci crée l’ sourcedirectoryintérieur /pathdonc 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 rsyncplace. rsynccompare 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 à rsyncchaque 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 scpet de tout copier à chaque fois.
En outre, rsyncvous permet de récupérer des transferts interrompus très facilement, contrairement à scp.
Enfin, les versions modernes de rsyncpar défaut fonctionnent sur ssh, donc si cela scpfonctionne déjà, cela rsyncdevrait plutôt être un remplacement immédiat.
rsyncest plus efficace. Une chose qu’il ne fait pas actuellement scpest 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' -roption 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:
rsyncque j'ai utilisées utiliseraient sshpar défaut, il -esshest 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.gzsoit .tgzpuisque le fichier est une archive tar compressée (car l' -zindicateur 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/logde domain.comvers ~/logs.tgzvous, 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/logat domain.comsur ~/destination/logsur 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.
-roption 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.
scpmais NFS n'est pas une option.