frank
Goto Top

Daten per FTP mit Unterverzeichnisse übertragen

Plattform: Linux oder Unix

Will man von seiner Linux/Unix Shell Daten von einem anderen FTP aus, zu sich übertragen, benutzt man für gewöhnlich einen FTP Client oder den FTP Befehl.

Benutzt man einen FTP Client, gibt es im Normalfall auch keine Probleme mit den darunter liegenden Unterverzeichnissen.
Bei einer zeitabhänigen Scriptsteuerung (per Bash oder Sh) ist es aber kein leichtes Unterfangen die darunterliegende Verzeichnisstruktur und die dazugehörigen Daten mit zu übertragen.

Benutz man den Standard FTP-Befehl, findet man im Manuell (man FTP) auch schnell einen Punkt mit dem Hinweis von AUTO-FETCHING FILES. Hier der Man(uell) Ausschnitt:

In addition to standard commands, this version of ftp supports an auto-fetch feature.  To enable auto-fetch, simply pass the list of host­ names/files on the command line.

The following formats are valid syntax for an auto-fetch element:

ftp://[user@]host:[path][/]
``Classic'' FTP format.  

If path contains a glob character and globbing is enabled, (see glob), then the equivalent of `mget path' is performed.  

If the directory component of path contains no globbing characters, it is stored locally with the name basename (see basename(1)) of path, in the current directory.  Otherwise, the full remote name is used as the local name, relative to the local root directory.

ftp://[user[:password]@]host[:port]/path[/][;type=X]

[...]
Schön! Das ganze hat nur einen Haken: Es können keine Unterverzeichnisse mit übertragen werden.

Hier die dazugehörige Passage:
Note: mget and mput are not meant to transfer entire directo­ry subtrees of files.  That can be done by transferring a tar(1) archive of the subtree (in binary mode).

Dies bezieht sich zwar auf mget und mput, aber genau das macht das Auto-Fetching.

Man könnte als nur durch ein Script mit allen Pfaden das Problem lösen.

Lösung:
Nachdem der Vorgang mit dem FTP Beffehl viel zu aufwenig ist, habe ich nach Alternativen gesucht und prompt auch eine schöne und einfache gefunden: NcFTP bzw. NcFTPGet

(Anmerkung: Das Programm hat nichts, aber auch gar nichts mit dem Norton-Commander o.ä. zu tun)

NcFtp findet man unter der URL: http://www.ncftpd.com/ncftp/
Die Software wird zum kostenlosen Download unter fast allen Linx/Unix Systemen angeboten (Binär oder im Quellcode).

Die Installation ist unter Linux recht einfach:
Die Binär Datei:
ftp://ftp.ncftp.com/ncftp/binaries/ncftp-3.0.2-linux-x86-glibc2.1-export.tar.gz
runter laden, mit gezip -d entpacken und mit tar xvf auspacken. Danach "Make install" eingeben und den Rest mach das Install Script automatisch. Fertig

Nun kann man einfach den Befehl ncftpget eingeben und ers sollte eine Auflistung aller Befehle erscheinen.

$ ncftpget -R ftp.ncftp.com /tmp /pub/ncftp
$ ncftpget [flags] remote-host local-dir remote-path-names...
lautet der Aufruf.
Das entscheidene ist der Parameter -R
Er ermöglicht das übertragen der Unterverzeichnisse mit all seinen Daten. Feine Sache das!

Betreibt man einen NT Rechner mit dem MS FTP Server , sollte man das Dateihandling auf UNIX umstellen. NcFTPget kann nichts mit den Backslashs "" von NT anfangen.

Zum Befehl NcFTPGet gibt es natürlich noch weitere Befehele wie z.B. NcFTPPut (upload) oder NcFTPLs (LS Befehl für FTP), NcFTPBatch (Batch für FTP) und einen richtigen FTP Client NcFTP.

Eine genaue Anleitung gibts auf der Seite:
http://www.ncftpd.com/ncftp/doc/ncftpget.html

Viel Spaß beim ausprobieren (ich übernehme aber keine Gewähr face-smile!

P.S. Über andere FTP Wege oder Lösungsvorschläge wäre ich und der Rest der User bestimmt sehr dankbar.

Frank Scholl

Content-ID: 42

Url: https://administrator.de/tutorial/daten-per-ftp-mit-unterverzeichnisse-uebertragen-42.html

Ausgedruckt am: 22.12.2024 um 01:12 Uhr

kingzeus
kingzeus 17.08.2007 um 09:39:57 Uhr
Goto Top
Hallo!

Ich habe folgende Frage! Ich habe einen FTP Server eingerichtet mit folgender Einstellung FTPS Implicit und möchte mit XP und Vista ein Script schreiben zur automatischen Daten Sicherung. das Problem die verbindung geht vom Client aus über den Standard Port 21. habe mit Eterreal das Netzwerk gesnifft und konnte alles sehen User, Passwort, Verschickte daten.
Unterstützt der Inkludierte client von Windows XP und Vista auch einen Sicheren Port? Bzw. wie kann ich mit hilfe von einem Script eine Sichere Verbindung aufbauen. Ich habe mit FileZilla die möglichkeit eine Sichere Verbindungh aufzubauen doch ich brauche eine möglichkeit dies Automatisiert "für nicht erfahrene User" laufen zu lassen. Die Sollen nur die Bat datei anklicken und der REST SOLL AUTOMATISCH LAUFEN. Gibt es eventuell ein Patch das Du kennst was bei Windows eine Sichere Verbindung zu lässt. Bitte um Hilfe ich weiss nicht mehr weiter. Danke KingZeus
Genie71
Genie71 19.12.2007 um 15:45:35 Uhr
Goto Top
Nach der Lösung such ich auch noch.

Eine "Behelfslösung" wäre, diesem "User" mit seinem "Passwort" nur das Recht zu geben, Daten zu schreiben aber nichts Lesen und zweitens diesem User erlauben, sich von nur einer einzigen IP-Adresse anzumelden.

Besser als nichts ...

Genie71
kingzeus
kingzeus 20.12.2007 um 07:27:32 Uhr
Goto Top
Ja das ist eh schon geschehen. Aber wie gesagt man sieht beim Sniffen den Login Namen und das Passwort.
Ich habemittlerweile umdisponiert und folgendes statt dem FTP Server gemacht.
VPN Verbindung aufbauen "per script" Netzlaufwerk verbinden "per script" unterordner erstellen und daten kopieren. Das ist sicherer als ftp und mann kann alles in ein Script packen.
Aber danke für Deine mühen.

Mfg

KingZeus
NBTKetchup
NBTKetchup 23.03.2011 um 12:15:34 Uhr
Goto Top
Hi

ich habe das Problem das er bei mir dann nur die nächste Ebene mit herunterlädt.

Beispiel:
es gibt auf dem FTP Server:
/ebene1/ebene2/datei1.dat
/ebene1/ebene2/datei2.dat
/ebene1/ebene2/ebene3/123.dat

wenn ich jetzt mache

ncftpget -R c:\temp /ebene1/*

lädt er mir folgendes herunter:
/ebene1/ebene2/datei1.dat
/ebene1/ebene2/datei2.dat
/ebene1/ebene2/ebene3/

mir fehlt die Datei im Unterordner und alle Unterordner der Unterordner

Kennt jemand das Problem und hat eine Lösung?

LG Ket