FTP: alle Dateien in einem Verzeichnis hochladen

Dieses Thema im Forum "Mac OS - Unix & Terminal" wurde erstellt von sheep, 10.02.2006.

  1. sheep

    sheep Thread Starter MacUser Mitglied

    Beiträge:
    1.222
    Zustimmungen:
    24
    Mitglied seit:
    21.03.2005
    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.
     
  2. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.696
    Zustimmungen:
    602
    Mitglied seit:
    24.09.2003
    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
     
  3. oneOeight

    oneOeight MacUser Mitglied

    Beiträge:
    47.834
    Zustimmungen:
    3.804
    Mitglied seit:
    23.11.2004
    es gibt das ftp kommando mput für mehrere files...
     
  4. sheep

    sheep Thread Starter MacUser Mitglied

    Beiträge:
    1.222
    Zustimmungen:
    24
    Mitglied seit:
    21.03.2005
    Vielen Dank euch beiden!

    Ich werde mir die beiden Ansätze mal ansehen.
     
  5. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.696
    Zustimmungen:
    602
    Mitglied seit:
    24.09.2003
    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.
     
  6. sgmelin

    sgmelin MacUser Mitglied

    Beiträge:
    3.714
    Zustimmungen:
    40
    Mitglied seit:
    16.05.2004
    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
     
  7. hns

    hns MacUser Mitglied

    Beiträge:
    294
    Zustimmungen:
    6
    Mitglied seit:
    16.09.2004
    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
     
Die Seite wird geladen...

Diese Seite empfehlen