web-dev-qa-db-fra.com

Obtenir la liste des fichiers du serveur FTP

J'essaie d'obtenir une liste de tous les fichiers que nous avons sur un serveur (en particulier chaque fichier pdf que nous avons là-bas). J'ai essayé d'utiliser Total Commander et de rechercher les fichiers. Cela a fonctionné dans une certaine mesure, comme dans, j'ai obtenu une liste de chaque pdf que nous avions là-bas, mais aucun moyen d'exporter les résultats (nous avons plus de 100 000 fichiers là-bas)

J'ai essayé d'utiliser un script bash pour obtenir les informations, mais je ne suis pas très expérimenté avec Linux, et je ne sais pas vraiment ce que je fais.

Mon script ressemble à ceci:

#!/bin/bash
hostname="<Host>"
ftp -i -nv $hostname << EOF
user <username> <password>
ls -R 
EOF

J'exécute le script ci-dessus

?Invalid command
501 Illegal PORT command
ftp: bind: Address already in use
221 Goodbye

Toute aide ou pointant sur quoi chercher serait grandement appréciée.

14
Raz

Essayez de configurer ftp pour utiliser le mode PASV (passif) pour les transferts de données. Cela a été fait avec le -p commutateur.

Je ne sais pas si vous pourrez faire une liste de fichiers récursifs avec ce client ftp. ls -R dans mon cas vient de donner la liste des fichiers et répertoires dans le répertoire de travail actuel. Peut-être liste récursive du répertoire FTP dans Shell/bash avec une seule session (en utilisant cURL ou ftp) vous aidera.

4
Patrick B.

Avec curl, c'est pratique
curl ftp://yourftpserver/dir/ --user username:password

33
user1587276

ncftpls ftp://yourftpserver/dir/*.pdf

Notez que des modèles tels que *.pdf, etc. dans la commande ci-dessus fonctionnent comme prévu.

Pour récursif, utilisez -R. Pour plus d'options, voir man ncftpls.

ncftpls est fourni par le package ncftp. Pour RHEL, ce package est disponible dans le référentiel epel.

6
Acumenus
curl ftp://user:password@<ip>/path/

Le dernier / est un must s'il s'agit d'un répertoire. Cela fonctionnait dans la version curl 7.29.0

3
Talespin_Kit

Comme mentionné dans l'un de mes commentaires, n'utilisez jamais user: password en tant que texte brut dans vos commandes, sinon vous risquez d'être piraté de l'histoire! Utilisez plutôt au moins un fichier protégé/restreint avec le nom d'utilisateur + mot de passe et remplacez-le dans votre commande, par exemple:

ftp://yourftpserver/dir/ --user "$(cat .userpw)"

Alors que .userpw est votre fichier protégé/restreint avec l'exemple de contenu: myusername: mypassword

1
ioCron