Je dois transporter beaucoup de fichiers d'un PC à un autre (les deux Linux). Je voudrais l'utiliser scp
pour cela, mais scp
ne permet que le transfert d'un fichier à la fois.
Comment puis-je faire ceci?
j'ai
- Aucune possibilité d'utiliser rsync ou tout autre protocole
- Pas de possibilité d'utiliser des certificats sans phrase de passe (mais avoir un certificat avec une phrase de passe)
- Une liste de fichiers à transférer et une liste avec le chemin de destination des fichiers sur l'autre serveur
- Les fichiers sont répartis sur de nombreux répertoires, et pas tous les fichiers dans les répertoires que je veux copier
Si possible, je voudrais compresser et décompresser de manière transparente pour économiser la bande passante!
Est-ce possible?
-C'' on a line by itself will cause the current directory to be changed to the directory specified on the following line. Names are terminated by newlines unless --null is specified. Note that --null also disables the special handling of lines containing
-C ''."Je suis presque sûr que ce n'est pas vrai, du moins pas pour la
scp
commande fournie par OpenSSH incluse avec la plupart des distributions Linux.J'utilise
scp file1 file2 ... fileN user@host:/destination/directory/
assez fréquemment.Pour une compression transparente, le protocole SSH a cela intégré et
scp
peut l'utiliser si vous fournissez l'-C
option sur la ligne de commande. Pour de nombreux petits fichiers similaires, vous trouverez que l'option tar + gz suggérée par akira gagne une meilleure compression car elle peut utiliser la similitude entre ces fichiers oùscp
chaque fichier est compressé en tant qu'entité distincte. Je préfère généralement utiliser scp car il est plus facile de reprendre un transfert partiel (ou, bien que je sache que dans cette situation le questionneur n'a pas l'option)rsync
car c'est à la fois encore plus facile à reprendre et partage l'ensemble de l'option tar + gz -avantage de compression de flux.la source
Ça ne
scp -r yourdir otherhost:/otherdir
marche pas ?Essayez ceci ensuite:
le
z
-flag to tar fait la compression. Ou vous pouvez utiliser -C pour ssh:la source
-C
fait?Sur RHEL5, voici le seul moyen que je connaisse pour sécuriser la copie d'une liste de fichiers contenant des caractères spéciaux (comme un espace). Créez un script shell et incluez les éléments suivants:
la source
Cela peut être fait sans trop de problèmes.
Je crée simplement une liste de fichiers avec le nom d'hôte à côté de chaque fichier et scp semble bien l'analyser. c'est à dire.
Scp semble bien fonctionner avec cette syntaxe. Comme je l'ai essayé sans le nom d'hôte à côté de chaque fichier, il a échoué après le premier fichier. Il semble que je me souvienne d'une autre syntaxe que j'ai utilisée pour cela auparavant et je la publierai une fois que je la trouverai.
la source
~/
peut généralement être laissé de côté - SCP fonctionne par rapport au répertoire personnel. .. Si vous avez une liste ailleurs dans$list
:scp $(echo "$list"|sed "s/^/$srchost:/") local_destination
(Cela cassera pour les noms de fichiers avec des espaces)Je recommanderais aux pièces d'utiliser une commande comme celle-ci pour créer une archive à partir de votre liste de fichiers
tar -cvf allfiles.tar -L mylist.txt
Utilisez ensuite scp pour télécharger l'archive.
utilisateur scp @ remotehost: ~ / allfiles.tar
/programming/8033857/tar-archiving-that-takes-input-from-a-list-of-files
la source