8 votes

Comment télécharger plusieurs fichiers vers FTP à partir d'un serveur Linux ?

J'ai par exemple des sauvegardes de bases de données sur mon serveur Linux, et je voudrais écrire un script pour le télécharger sur un FTP distant. J'ai essayé le put mais elle ne peut transférer qu'un seul fichier à la fois. J'ai ensuite essayé la commande mput, mais elle ne me montre que des points d'interrogation pour les fichiers que je veux transférer (peut-être que je l'utilise mal ?..)

J'ai essayé ça :

#!/bin/bash
ftp -n <<EOF
open ftp.server.com
user name password
cd backup
mput /backup/*
EOF

Mais ça ne marche pas. Il sort les noms des fichiers que je veux transférer avec des points d'interrogation à la fin des noms. Est-ce que j'ai raté quelque chose ou existe-t-il une meilleure méthode plus simple ?

9voto

Ram Points 11

Jetez un coup d'œil à ncftp il est accompagné d'un utilitaire ( ncftpput ) qui peuvent être scriptés à cette fin :

$ ncftpput -R ftp.server.com /remote/path /backup

Le site -R signifie un mode récursif. Vous pouvez avoir vos détails d'authentification dans un fichier séparé. Voir la page de manuel ( ncftpput(1) ) pour plus de détails.

0 votes

J'étais sur le point de suggérer ncftp aussi. Je l'utilise tout le temps (et sa fonction de signets est géniale :)).

0 votes

Pour une raison quelconque, il s'est mal installé ou ne s'est pas installé du tout. Il me donne une erreur -bash: ncftp: command not found . Dans le journal d'installation, il est indiqué qu'il a été installé avec succès, mais j'ai également vu des avertissements comme ceux-ci : " insserv : warning : script 'NcFTPd' manque de balises LSB et de surcharges insserv : Il y a une boucle entre le service redmine et NcFTPd s'il est arrêté insserv : boucle impliquant le service NcFTPd à la profondeur 2 insserv : boucle impliquant le service redmine à la profondeur 1 insserv : L'arrêt de NcFTPd dépend de redmine et donc de la facilité système `$all', ce qui ne peut pas être vrai !"

2 votes

@Andrius Êtes-vous sûr d'avoir installé le client et non le serveur ? Le message d'erreur suggère clairement que vous avez installé le serveur.

3voto

user Points 28521

Une autre alternative pourrait être d'utiliser CurlFtpFS FUSE, un pilote de système de fichiers qui expose un hôte FTP en tant que répertoire monté (ce qui vous permet d'accéder à ces fichiers avec n'importe quel outil ordinaire, notamment cp ). Je ne sais pas si cela fonctionne bien, mais après une rapide recherche sur Google, cela semble très prometteur. CurlFtpFS remonte à plus loin que FUSE en fait, et devrait donc être stable.

Pour l'utiliser, installez le paquet approprié pour votre distribution (par exemple, Arch et Debian utilisent le nom du paquet curlftpfs ), chargez le fuse module, et sudo curlftpfs ftp.example.com /mnt/ftp/ -o user=username:password,allow_other en substituant les valeurs appropriées pour le nom du serveur, le point de montage, le nom d'utilisateur et le mot de passe.

Vous trouverez plus de détails sur la page liée, mais cela devrait vous permettre de commencer.

3voto

TheFoOL Points 141

Vous pouvez utiliser lftp

lftp ftp://user:password@domain.ltd -e "mirror -e -R /local/folder /remote/folder ; quit"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X