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:
[...]
Schön! Das ganze hat nur einen Haken: Es können keine Unterverzeichnisse mit übertragen werden.
Hier die dazugehörige Passage:
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.
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 !
P.S. Über andere FTP Wege oder Lösungsvorschläge wäre ich und der Rest der User bestimmt sehr dankbar.
Frank Scholl
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 directory 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...
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 !
P.S. Über andere FTP Wege oder Lösungsvorschläge wäre ich und der Rest der User bestimmt sehr dankbar.
Frank Scholl
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 42
Url: https://administrator.de/contentid/42
Ausgedruckt am: 21.11.2024 um 13:11 Uhr
4 Kommentare
Neuester Kommentar
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
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
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
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
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
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