netcat : je “déTAR” d’une machine vers l’autre

“déTAR” à distance

Pense-bête : j’ai un gros .tar sur un serveur, je dois l’extraire sur un autre serveur. MAIS, sur cet autre serveur, je n’ai pas la place pour récupérer le .tar puis le décompresser, c’est-à-dire stocker deux fois en terme d’espace.
Donc j’utilise netcat pour faire un “pipe” entre commande d’une machine à l’autre.

Une fois le programme netcat installé, peu importe par quel biais, et en considérant que vous n’avez pas de restriction réseau entre les 2 machines (sinon ouvrez le port ci-dessous en UDP), vous faites ceci :

Sur la machine cible, on prépare une socket en écoute, ici sur le port 12345 :

moi@destination:/ou/je/veux/ecrire$ netcat -l -p 12345 | tar xvf -

Sur la machine émettrice, on balance la purée dans le tuyau :

moi2@source:~$ cat monfichier.tar | netcat aladdin 12345

A adapter dans le cas d’un fichier .bz2 ou .gz, par exemple.

Recopie d’arborescence d’un serveur à l’autre

Une autre utilisation très courante est la suivante : recopier une arborescence d’un serveur à l’autre, sans utiliser rsync, scp etc. Pourquoi se passer de ces outils ? il y a des cas où on ne les a pas. Et puis là on évite le cryptage, tout ça, charge CPU, blablabla.
Ca donne :

dest$ nc -l p 12345 | tar x
src$ tar cvf - mon_arborescence | nc dest 12345

EDIT : truc bien crade : ça marche aussi pour injecter du SQL…

dest$ nc -l p 12345 | mysql -u monlogin -p
src$ cat test.sql | nc dest 12345

Attention à ce que vous faites là quand même.
Notez qu’au lancement de la commande sur la machine de destination, le mot de passe mysql est demandé tout de suite.

Voilà
A+

Vus : 363
Publié par Michauko : 64