GNU/Linux >> Tutoriels Linux >  >> Linux

Scp peut-il copier des répertoires de manière récursive ?

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

Linux
  1. Conserver la date de modification des répertoires/dossiers avec Rsync ?

  2. Copier des fichiers avec SCP et Rsync

  3. Comment copier des répertoires de manière récursive à l'aide de rsync tout en excluant des fichiers spécifiques

  4. Pourquoi les fichiers ne peuvent-ils pas être manipulés par inode ?

  5. Comment lister récursivement les répertoires en C sous Linux ?

Commande Rsync :20 exemples utiles sous Linux

Comment copier un fichier dans plusieurs répertoires sous Linux

Comment exclure des fichiers et des répertoires avec Rsync

Copier des fichiers et des répertoires sous Linux

Synchroniser des répertoires dans les deux sens avec Rsync ?

Copier des fichiers en toute sécurité avec la commande SCP