Smart moyen pour copier plusieurs fichiers à partir de différents chemins usinc scp
Je voudrais savoir d'une manière facile à utiliser scp pour copier des fichiers et des dossiers qui sont présents dans les différents chemins dans mon système de fichiers. Le ssh serveur de destination demande un mot de passe et je ne peut pas mettre cela dans les fichiers de configuration. Je sais que la scp n'a pas un paramètre de mot de passe que je pourrais fournir à partir d'un script, donc pour l'instant je doit copier chaque fichier ou d'un répertoire, un par un, écrire mon mot de passe à chaque fois.
Double Possible de scp ou sftp de copier des fichiers multiples avec une seule commande
OriginalL'auteur Michele Bortolato | 2012-01-09
Vous devez vous connecter pour publier un commentaire.
en plus de la déjà mentionné glob:
vous pouvez utiliser
{,}
de définir les voies d'accès alternatives/pathparts dans un état uniquepar exemple:
scp user@host:/{PATH1,PATH2} DESTINATION
scp 'user@host:{PATH1,PATH2}' DESTINATION
Ce qui sur le chemin de la cible? Est-il un moyen d'avoir quelque chose comme
scp 'user@host:{PATH1,PATH2}' DIRECTORY/{FILE1,FILE2}
?OriginalL'auteur Hachi
Si vous pouvez exprimer tous les noms des fichiers que vous souhaitez copier à partir du système distant en utilisant un seul glob modèle, vous pouvez le faire en un seul
scp
de commande. Cette utilisation ne supporte qu'un seul dossier de destination sur le système local pour tous les fichiers. Par exemple:de copier tous les fichiers à partir de la télécommande du système qui sont des noms
(something).tar.gz
et qui sont situés dans des sous-répertoires de/tmp
dont les noms commencent para
,b
, ouc
. Les guillemets simples sont à protéger le glob motif d'être interprété par le shell sur le système local.Si vous ne pouvez pas exprimer tous les fichiers que vous souhaitez copier un seul glob modèle et que vous souhaitez que la copie puisse être fait à l'aide d'une seule commande (et une seule connexion SSH qui va vous demander votre passsword qu'une seule fois), alors vous pouvez soit:
scp
, commesftp
oursync
, ouOriginalL'auteur Celada
créer une paire de clés, copier la clé publique sur le serveur.
Ajouter du contenu dans le fichier ~/.ssh/identity.pub pour le fichier ~/.ssh/authorized_keys2 de server côté utilisateur. Vous n'avez pas besoin de taper de mot de passe plus.
Cependant, soyez prudent! quelqu'un peut accéder à votre "compte local" peut "ssh" sur le serveur sans mot de passe.
Je connaissais cette méthode, mais je ne voulais pas mettre mes mains sur la commune de répertoires comme .ssh.
OriginalL'auteur Ken Cheung
Alternativement, si vous ne pouvez pas utiliser l'authentification par clé publique, vous pouvez ajouter la configuration suivante pour SSH (pour les
~/.ssh/config
ou que les arguments de ligne de commande):Avec cette configuration, la connexion SSH seront maintenues ouvertes pendant 2 minutes, donc vous aurez seulement besoin de taper le mot de passe la première fois.
Ce post a plus de détails sur cette fonctionnalité.
OriginalL'auteur Daniel Serodio
De ce site:
Ouvrir le maître
SSHSOCKET=~/.ssh/myUsername@targetServerName
ssh -M -f -N -o ControlPath=$SSHSOCKET myUsername@targetServerName
D'ouvrir et de fermer les autres connexions sans ré-authentification, comme vous le souhaitez
scp -o ControlPath=$SSHSOCKET myUsername@targetServerName:remoteFile.txt ./
Fermer la connexion au maître
ssh -S $SSHSOCKET -O exit myUsername@targetServerName
Intuitif, plus sûr que de créer une paire de clés, plus rapide que la création d'un fichier compressé et a travaillé pour moi!
OriginalL'auteur aerijman