Transférer des fichiers d’un ftp à un autre

J’aime bien pouvoir m’installer des instances de test des sites sur lesquels je travaille, mais en conditions réelles, soit sur un vrai serveur de production et non en local. Du coup, si je veux récupérer l’intégralité d’un site via ftp, j’utilise une petite astuce.

Cette petite astuce n’en est pas vraiment une en fait et nécessite d’être exécutée en ligne de commande sous Linux Debian.

Donc faisons le point :

j’ai d’un côté mon serveur de test, une Debian 6  avec proftpd d’installé (serveur ftp) ET lftp, qui lui est un client ftp.

De l’autre, un serveur de production avec dessus, le site que je veux aspirer.

Je passerai sur la configuration de proftpd et lftp. Ça fera peut être l’objet d’un article dédié un de ces jours 😉

La solution

Une seule ligne de commande à exécuter côté serveur de test, soit, ma Debian :

où login_prod correspond au login ftp du site de prod, pass_prod correspond au pass ftp du site de prod et host_prod correspond au domaine ftp du site de prod.

Le -e commande à lftp d’exécuter ce qui est entre guillemets.
Le mirror crée une copie exacte.

L’avantage de cette commande exécutée avec mirror, c’est qu’on récupère toute l’arborescence et les contenus des dsssiers.

Si on veut récupérer seulement un fichier, on utilise get au lieu de mirror, et si ou souhaite envoyer, on utilisera put.

Sources : http://doc.ubuntu-fr.org/lftp