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 [email protected] / 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

Edgaras Karka
la source
1
Ne fait scp * [email protected]:/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 [email protected]:/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.

parazyd
la source
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 [email protected]:/var/www/html/Renommez le nouveau répertoire si nécessaire.
Parazyd
8
Ou $ scp -r ~/local_dir/* [email protected]:/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/. [email protected]:/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/* [email protected]:/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.

tachomi
la source
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/. [email protected]:/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.

raphinesse
la source
0

Suivez ces étapes:

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

    scp -r ~/local_dir [email protected] /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/* [email protected] /var/www/html/target_dir
    
  3. Ne pas utiliser: scp -r ~/local_dir/. [email protected] /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: .
    
Syed Faraz Umar
la source