2013-03-29 15 views
7

Ich versuche, eine Liste aller Dateien auf einem Server (speziell jede PDF-Datei, die wir dort haben) zu bekommen. Ich habe versucht, total commander zu verwenden und nach den Dateien zu suchen. Es funktionierte bis zu einem gewissen Grad, wie in, ich habe eine Liste von jedem PDF, das wir dort hatten, aber keine Möglichkeit, die Ergebnisse zu exportieren (wir haben 100.000 + Dateien dort)Get Liste der Dateien von FTP-Server

Ich habe versucht, mit einem Bash-Skript zu bekommen Informationen, aber ich bin nicht sehr erfahren mit Linux, und ich weiß nicht wirklich, was ich tue.

Mein Skript sieht wie folgt aus:

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

Ausführen des oben Skript i erhalten

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

Hilfe oder zeigt mir auf, was sehr geschätzt suchen würde.

Antwort

4

Versuchen Sie, ftp so zu konfigurieren, dass der PASV-Modus (passiv) für Datenübertragungen verwendet wird. Dies geschieht mit dem -p Schalter.

Ich bin mir nicht sicher, ob Sie in der Lage sein werden, eine rekursive Datei mit diesem FTP-Client aufzulisten. ls -R in meinem Fall gab nur die Liste der Dateien und Verzeichnisse im aktuellen Arbeitsverzeichnis. Vielleicht hilft Ihnen Recursive FTP directory listing in shell/bash with a single session (using cURL or ftp).

+0

Vielen Dank! die passive Flagge funktioniert – Raz

26

mit Curl, ist dieses handliche
curl ftp://yourftpserver/dir/ --user username:password

+9

FYI: 'curl -l' gibt nur die Namen zurück. –

+1

Wie skripten Sie dies, um zu rekrutieren? –

4

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

Beachten Sie, dass Muster wie *.pdf usw. in dem obigen Befehl wie erwartet funktionieren.

Verwenden Sie für rekursive -R. Weitere Optionen finden Sie unter man ncftpls.

ncftpls wird vom ncftp Paket zur Verfügung gestellt. Für RHEL ist dieses Paket im epel Repo verfügbar.

3
curl ftp://user:[email protected]<ip>/path/ 

Die letzten / ist ein Muss, wenn es ein Verzeichnis ist. Dies funktioniert in Curl Version 7.29.0