FTP: alle Dateien in einem Verzeichnis hochladen

sheep

sheep

Aktives Mitglied
Thread Starter
Dabei seit
21.03.2005
Beiträge
1.255
Reaktionspunkte
25
Hi,

ich bräuchte für ein Script die Möglichkeit, sämtliche Dateien in einem bestimmten Verzeichnis auf einen FTP-Server hochzuladen.

Derzeit lasse ich einfach vorher alles in ein ZIP-Archiv packen und dann dieses hoch, aber mit einzelnen Dateien wäre es flexibler und schneller.

Kennt da jemand eine Möglichkeit?

Das Script sieht derzeit etwa so aus, damit man sich das vorstellen kann:

Code:
cd $HOME/Desktop/Upload
zip -m Upload * -x Icon*
/usr/bin/ftp -in <<EOF
open <server>
user <benutzername> <passwort>
bin
hash
prompt
cd privat
put $HOME/Desktop/Upload/Upload.zip Upload.zip
bye

Die fragliche Zeile wäre also wohl "put $HOME/Desktop/Upload/Upload.zip Upload.zip", da hätte ich gerne so etwas wie "put $HOME/Upload/* *", was anscheinend so nicht geht (wohl zu einfach gedacht ;)).

Hintergrund ist der, dass ich auf die Weise einen Ordner auf dem Desktop habe, wo ich einfach Dateien reinschubsen kann, die dann (per Cronjob) automatisch auf einen Server geladen werden, so dass ich von überall darauf Zugriff habe.
 
Es gibt verschiedene Ansätze, die je nach spezieller Anforderung mehr oder weniger komplex sind.
Für einfache Skripte ist IMHO `curl' sehr gut geeignet. `curl' kann z.B. mit .netrc Dateien umgehen, damit entfällt schon einmal die Notwendigkeit, Benutzername und Passwort im Skript zu implementieren.
Schau Dir mal die manpage und hier insbesondere die Schalter -T und -n an.
Wenn Du nicht klarkommst, einfach nochmal melden ;).

`curl' kann übrigens nicht nur ftp sondern ist insgesamt sehr leistungsfähig und nützlich.

Achso, und wenn es sehr "quick" und sehr "dirty" sein soll, geht auch sowas:
Code:
echo put filename|ftp benutzer:passwort@ftp.server.de
 
es gibt das ftp kommando mput für mehrere files...
 
Vielen Dank euch beiden!

Ich werde mir die beiden Ansätze mal ansehen.
 
oneOeight schrieb:
es gibt das ftp kommando mput für mehrere files...
Ja, das fragt aber immer nach (so nach dem Motto: "Soll ich wirklich?"). Viellicht kann man das auch abschalten, insgesamt ist aber der CLI FTP Client nicht besonders skriptingfreundlich. Muss er auch nicht, schließlich ist er dafür nicht gemacht.
 
Ja, das fragt aber immer nach (so nach dem Motto: "Soll ich wirklich?").

Dann gib vorher "prompt" ein. Das schaltet den interaktiven Modus aus und lädt alles ohne Rückfrage hoch.
Das umgekehrte Kommando heisst übrigends "mget" für "multiple get".

Edi: Typo
 
Das Beste ist mit curl zu arbeiten. Da kann man File-Muster angeben und den Befehl aus einem Shell-Script aufrufen.

Ich benutze das sogar folgendermaßen: zu meiner Web-Page gehört ein Xcode-Projektfile. Und im Xcode-Projekt gibt es nur ein einziges Target mit einer Shell-Script-Build-Phase. In dem Shellscript ist dann der curl drin.

Dann kann ich in Xcode die PHP-Files ändern und per Apfel-B (Build) auf den Web-Host senden.

-- hns
 
Zurück
Oben Unten