Copie efficace sur le réseau

Petite astuce bien geek pour le premier billet depuis des lustres.

Il peut s'avérer utile de copier un grand nombre de données via le réseau (ça m'est arrivé ce week-end). Si on veut conserver les droits, on oublie tout de suite la commande scp (à moins que quelqu'un dans l'assistance me donne la solution). On va donc s'appuyer sur la commande tar et faire tout ça en live.

Tout d'abord, sur la destination, on lance la commande suivante :

# nc -l -p 10000 | tar xvf -

Ce qui aura pour but d'écouter sur le port 10000 et d'envoyer tout le contenu à la commande tar.

Il suffit ensuite d'exécuter sur la source :

# tar cf - <liste des fichiers/répertoires à copier> | nc <destination> 10000

Et voilà, le transfert à la vitesse de l'éclair. Par contre, évidemment, la procédure n'est pas du tout sécurisée d'un point de vue confidentialité (ca transite en clair sur le réseau).

A vous de voir...

Commentaires

1. Le lundi 16 novembre 2009, 12:18 par Toniob

Je précise qu'il est bien évidemment possible d'ajouter les options 'z' ou 'j' aux commandes tar afin d'activer la compression.

Cela peut accélérer ou ralentir la copie, ca dépend des cas.

2. Le mardi 17 novembre 2009, 00:21 par mat

Tu peux faire ca avec ssh+tar aussi pour être un peu plus secure:

tar zcf - <liste des fichiers/répertoires à copier> | ssh <destination> "cd /blah; tar zpxvf -"

D'ailleurs, ce genre de bidouilles est bien pratique quand tu as un gros .tar à désarchiver sur ta machine distance et pas assez de place pour le .tar et le contenu, il te suffit de faire un truc du genre cat truc.tar.gz | ssh <destination> "cd /blah; tar zpxvf -"