Je dois transporter beaucoup de fichiers d'un PC à un autre (Linux). Je voudrais utiliser scp
pour cela, mais scp
permet uniquement de transférer un fichier à la fois.
Comment puis-je faire ceci?
J'ai
Si possible, j'aimerais gzip et ungzip de manière transparente pour sauver la bande passante!
Est-ce possible?
Utilisez tar
:
tar cvzf - -T list_of_filenames | ssh hostname tar xzf -
J'aimerais utiliser SCP pour cela, mais SCP ne permet que le transfert d'un fichier à la fois.
Je suis à peu près sûr que ce n'est pas vrai, du moins pas pour la commande scp
fournie par l'OpenSSH incluse avec la plupart des distributions Linux.
J'utilise scp file1 file2 ... fileN user@Host:/destination/directory/
assez fréquemment.
Pour la compression transparente, le protocole SSH a cette intégré et scp
peut l'utiliser si vous fournissez le -C
option sur la ligne de commande. Pour beaucoup de petits fichiers similaires, vous trouverez que l'option TAR + GZ proposée par Akira gagne une meilleure compression car elle peut utiliser une similitude entre ces fichiers où scp
compresse chaque fichier comme une 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 dans cette situation, le questionneur n'a pas l'option) rsync
comme cela est à la fois plus facile à reprendre et aux actions L'avantage de compression complet de l'option TAR + GZZ.
NE PAS scp -r yourdir otherhost:/otherdir
travailler?
Essayez cela alors:
tar cfz - . | ssh otherhost "cd /mydir; tar xvzf -"
le drapeau z
- la goudron compression. Ou vous pouvez utiliser -c à ssh:
tar cf - . | ssh -C otherhost "cd /mydir; tar xvf -"
Sur RHEL5, voici la seule façon possible que je sache de sécuriser la copie une liste de fichiers contenant des caractères spéciaux (comme un espace). Faites un script shell et inclure les éléments suivants:
FILE="/path/filename"
while read line; do
scp "$line" username@servername:/destination/
done < $FILE