Comment copier tous les fichiers d'un répertoire dans un répertoire distant à l'aide de scp?


68

Mon objectif est de copier uniquement tous les fichiers de ~ / rép_local vers utilisateur@host.com / var / www / html / target_dir à l' aide de scp et de ne pas créer de catégorie rép_local dans rép_local.

/var/www/html/target_dir/files..

mais non

/var/www/html/target_dir/local_dir/files.. lors de l'utilisation du paramètre -r


1
Ne fait scp * user@host.com:/var/www/html/target_dirpas ce que tu veux? Si tel est le cas, modifiez plus en détail ce que vous essayez de faire et ce que vous avez déjà essayé.
Michael Homer

Ajout /. n'est plus le travail. Plus ici
Tsulatsi Tamim

Réponses:


91

scp a l'argument -r. Alors, essayez d'utiliser:

$ scp -r ~/local_dir user@host.com:/var/www/html/target_dir

L'argument -r fonctionne comme l'argument -r dans cp, il transférera l'intégralité de votre dossier ainsi que tous les fichiers et sous-répertoires qu'il contient.


5
Votre commande a créé un local_dirrépertoire dans / var / www / html / target_dir. Mon objectif est de ne copier que les fichiers.
Edgaras Karka

Désolé, je me suis trompé. Ensuite, répétez simplement la commande, mais comme ceci: $ scp -r ~/local_dir user@host.com:/var/www/html/Renommez le nouveau répertoire si nécessaire.
Parazyd

8
Ou $ scp -r ~/local_dir/* user@host.com:/var/www/html/target_dirtout ce qui flotte votre bateau.
Parazyd

Comment exclure certains répertoires du local lors de la copie sur une télécommande
Sushivam

13
Remplacez le caractère générique *par un point .et copiez le contenu du répertoire (y compris tous les fichiers de points) sans copier le répertoire lui-même. scp -pr ~/local_dir/. user@example.com:/path/to/target_dir
roaima

19

Si votre objectif est de transférer tous les fichiers à partir local_dirdu *caractère générique fait le tour:

$ scp ~/local_dir/* user@host.com:/var/www/html/target_dir

L' -roption signifie "récursivement", vous devez donc l'écrire lorsque vous essayez de transférer un ou plusieurs répertoires.

De man scp:

-r 
Recursively copy entire directories. Note that scp follows symbolic links encountered in the tree traversal.

Ainsi, si vous avez des sous-répertoires à l'intérieur local_dir, le dernier exemple transférera uniquement des fichiers, mais si vous définissez l' -roption, les fichiers et les répertoires seront transférés.


1+ Parce que vous devez lire les commentaires dans la réponse acceptée pour obtenir la bonne réponse, alors que celle-ci l'explique directement.
André Christoffer Andersen

17

Ajouter /.dans votre répertoire source transférera son contenu à la place du répertoire lui-même. Contrairement à la solution générique, cela inclut également les fichiers cachés.

$ scp -r ~/local_dir/. user@host.com:/var/www/html/target_dir

Le mérite de cette solution revient à Roaima, mais j’ai pensé qu’elle devrait être affichée comme une réponse réelle et non comme un commentaire.


0

Suivez ces étapes:

  1. Copier le répertoire local_diravec tous ses sous-répertoires:

    scp -r ~/local_dir user@host.com /var/www/html/target_dir
    
  2. copier uniquement le contenu de local_diret pas le répertoire local_dirlui-même:

    scp -r ~/local_dir/* user@host.com /var/www/html/target_dir
    
  3. Ne pas utiliser: scp -r ~/local_dir/. user@host.com /var/www/html/target_dircar une erreur est générée (vient d'être testée et a reçu l'erreur suivante):

    scp: error: unexpected filename: .
    
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.