Solution 1 :
Oui, utilisez -r
:
scp -rp sourcedirectory [email protected]:/path
- -r signifie récursif
- -p préserve les heures de modification, les heures d'accès et les modes du fichier d'origine.
Remarque :Cela crée le sourcedirectory
à l'intérieur de /path
donc les fichiers seront en /path/sourcedirectory
Solution 2 :
Bien que les réponses précédentes soient techniquement correctes, vous devriez également envisager d'utiliser rsync
Au lieu. rsync
compare les données côté envoi et réception avec un mécanisme de comparaison afin qu'il n'ait pas à renvoyer les données déjà envoyées.
Si vous allez copier quelque chose sur une machine distante plus d'une fois, utilisez rsync
. En fait, c'est bien d'utiliser rsync
à chaque fois car il a plus de contrôles pour des choses comme la copie des autorisations et de la propriété des fichiers et l'exclusion de certains fichiers ou répertoires. En général :
$ rsync -av /local/dir/ server:/remote/dir/
synchronisera un répertoire local avec un répertoire distant. Si vous l'exécutez une deuxième fois et que le contenu du répertoire local n'a pas changé, aucune donnée ne sera transférée - beaucoup plus efficace que d'exécuter scp
et tout copier à chaque fois.
Aussi, rsync
vous permet de récupérer très facilement des transferts interrompus, contrairement à scp
.
Enfin, les versions modernes de rsync
par défaut exécuté sur ssh, donc si scp
fonctionne déjà, rsync
devrait à peu près être un remplacement instantané.
Solution 3 :
C'est ce que le -r
l'option est pour. :)
Consultez la page de manuel scp pour plus d'informations si nécessaire.
Solution 4 :
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
Solution 5 :
La meilleure façon est d'utiliser rsync sur SSH
rsync -a -essh /source/ [email protected]:/dest/
rsync -a -essh [email protected]:/source/ /dest/
Mes options préférées sont -Pazvessh --delete :
- -a :mode d'archivage (inclut de nombreuses options communes par défaut, y compris la préservation des liens symboliques)
- -z :compresser
- -v :verbeux :affiche les fichiers
- -P :affiche la progression sous forme de fichiers terminés/fichiers restants
- -e ssh :faire rsync dans le protocole ssh
- --delete :supprime les fichiers de la destination qui ne sont plus dans la source