web-dev-qa-db-fra.com

Comment copier tous les fichiers d'un répertoire vers un répertoire distant en utilisant scp?

Mon objectif est de copier uniquement tous les fichiers de ~/local_dir vers [email protected]/var/www/html/target_dir en utilisant scp et ne créez pas de catégorie local_dir dans local_dir.

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

mais non

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

85
Edgaras Karka

scp a l'argument -r. Essayez donc d'utiliser:

$ scp -r ~/local_dir [email protected]:/var/www/html/target_dir

L'argument -r fonctionne exactement comme l'argument -r dans cp, il transférera l'intégralité de votre dossier et tous les fichiers et sous-répertoires à l'intérieur.

123
parazyd

Si votre objectif est de transférer tous les fichiers de local_dir le * le caractère générique fait l'affaire:

$ scp ~/local_dir/* [email protected]:/var/www/html/target_dir

Le -r option signifie "récursivement", vous devez donc l'écrire lorsque vous essayez de transférer un répertoire entier ou plusieurs répertoires.

De man scp:

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

Donc, si vous avez des sous-répertoires dans local_dir, le dernier exemple transférera uniquement des fichiers, mais si vous définissez -r option, il transférera les fichiers et répertoires.

24
tachomi

Ajout de /. dans votre répertoire source transférera son contenu au lieu du répertoire lui-même. Contrairement à la solution générique, cela inclura également tous les fichiers cachés.

$ scp -r ~/local_dir/. [email protected]:/var/www/html/target_dir

Le mérite de cette solution revient à roaima, mais je pensais qu'elle devrait être publiée comme une réponse réelle, pas seulement un commentaire.

18
raphinesse

Suivez ces étapes:

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

    scp -r ~/local_dir [email protected] /var/www/html/target_dir
    
  2. copier uniquement le contenu de local_dir et non le répertoire local_dir lui-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_dir car il génère une erreur (vient d'être testé et a reçu l'erreur suivante):

    scp: error: unexpected filename: .
    
3
Syed Faraz Umar