Bildverteilung an Agenturen mittels FTP und Webserver

Heute gibt es mal etwas Sinnvolles zum Basteln für die Informatiker, Programmierer und ande­ren IT-Berufler unter Euch.
Im Blog von Dreamstime hat­te der Softwareentwickler Marco Schwarz mal auf eng­li­sch eine Anleitung gepos­tet, wie man mit­tels eines eige­nen Webservers ein Foto ein­fach auto­ma­ti­sch an ver­schie­de­ne Bildagenturen schi­cken kann. Ich bat ihn, die­se Anleitung mal ins Deutsche zu über­tra­gen. Viel Spaß beim Lesen und Danke an Marco.
Viele Kabel in Hand
_______ab_hier_schreibt_Marco_____________
Wer kennt das nicht? Da hat man eine arbeits­rei­che Woche hin­ter sich und eine Menge Bilder auf der Festplatte – und nun wol­len die­se zu den ver­schie­de­nen Bildagenturen.
Nehmen wir mal an, 50 Bilder mit einer durch­schnitt­li­chen Dateigröße von je 8MB sind zu ver­tei­len. Das sind 400MB die zu jeder Agentur gela­den wer­den müs­sen. In mei­nem Fall wäre dies bei 8 Agenturen ein Transfervolumen von ca. 3.2 Gigabyte.
Mit dem ‚tra­di­tio­nel­len Weg‘, also Upload zu jeder ein­zel­nen Agentur per FTP-Client, dau­ert dies bei einer 16MBit DSL-Leitung ca. 9 Stunden (bei 100KB Upload-Geschwindigkeit).
Um dies zu beschleu­ni­gen, hat­te ich die Idee, mei­nen Webserver zur Verteilung zu benut­zen. Er steht im 1&1-Rechenzentrum und hat eine etwas schnel­le­re Anbindung als ich zu Hause 😉

Zwei Voraussetzungen gibt es für die von mir beschrie­be­ne Methode:

  • Der Webserver läuft mit Linux
  • Ein Zugang per SSH ist mög­li­ch

Wem das alles nichts sagt oder wer sich kei­nen Webserver zule­gen will, der soll­te sich mal picwork­flow* anse­hen, das Prinzip ist ähn­li­ch.

Nun aber zum Verteilen der Bilder:
  1. Verzeichnis anle­gen
    Zuerst soll­te man sich ein Verzeichnis für die benö­tig­ten Scripte (sie­he 2.) sowie die Bilddateien anle­gen. Darauf ach­ten, daß die­ses nicht im Web-Verzeichnis liegt, wo über den Browser dar­auf zuge­grif­fen wer­den kann – ansons­ten könn­te jemand auf die Benutzer/Passwortinformationen zugrei­fen!
  2. Scripte anle­gen
    Jede Seite erhält ein klei­nes Script, mit dem die Bilder aus dem aktu­el­len Verzeichnis zur Agentur gela­den wer­den. Das sieht dann z.B. für die Agentut 123rf so aus:— Start up123rf.sh —

    #!/usr/bin/expect
    set time­out -1
    spawn ftp -v -i submit.123rf.com
    expect „Name („
    send „der_benutzername_kommt_hierhinn“
    expect „Password:“
    send „und_hier_das_passwortn“
    expect „ftp>“
    send „mput *.jpgn“
    expect „ftp>
    „send „quitn“

    — Ende —

    Die Zeilen mit dem „Start“ und „Ende gehö­ren natür­li­ch nicht mit in das Script.

    Einfach Benutzername und Passwort durch die eige­nen Werte erset­zen und schon wird hef­tig hoch­ge­la­den.
    In der spawn-Zeile wird ein­fach für jede Agentur der ent­spre­chen­de FTP-Server ein­ge­tra­gen.
    Eventuell müs­sen die expect-Zeilen etwas ange­passt wer­den, falls der FTP-Server der Agentur ande­re Meldungen aus­gibt.

    Wenn meh­re­re Dateitypen gela­den wer­den sol­len, ein­fach wei­te­re expect/send für das mput ergän­zen, das kann dann z.B. so aus­se­hen:

    expect „ftp>“
    send „mput *.jpgn“
    expect „ftp>“
    send „mput *.zipn“
    expect „ftp>“
    send „mput *.avin“

    Muss in ein Unterverzeichnis auf dem FTP-Server gewech­selt wer­den, fol­gen­des Kommando anpas­sen und vor die mput-Befehle ein­fü­gen:

    expect „ftp>“
    send „cd ein_ftp_unterverzeichnisn“

  3. Liste eini­ger Bildagenturen mit FTP-Servern
    ftp.shutterstock.com
    upload.dreamstime.com
    submit.fotolia.com
    ftp.canstockphoto.com
    ftp.bigstockphoto.com
    ftp.clipdealer.com

    panthermedia.net
    usw.
    Eventuell müs­sen die FTP-Zugänge noch bei der jewei­li­gen Agentur frei­ge­schal­tet wer­den, falls man bis jetzt nur mit dem Webinterface gela­den hat.
  4. Haupt-Script zum Aufruf der ein­zel­nen Scripte anle­gen
    Man kann die Einzelscripte natür­li­ch von Hand auf­ru­fen, schnel­ler gehts aber mit noch einem klei­nen Script:— Start upall.sh —
    #!/bin/bash
    ./upshut.sh
    ./upcan.sh
    ./upbigs.sh
    ./updream.sh
    ./upfotolia.sh
    ./uppanther.sh
    ./upclip.sh
    ./up123rf.sh
    — Ende —

    Der Inhalt vari­iert natür­li­ch je nach belie­fer­ten Agenturen. Die Namen der Scripte müs­sen denen ent­spre­chen, die bei Schritt zwei ver­ge­ben wur­den.

    Zum Schluss für alle Scripte den Befehl

    chmod 700 *.sh

    aus­füh­ren, damit sie aus­führ­bar, aber nicht für jeden les­bar sind.

  5. Bilder ver­tei­len
    Jetzt kommts: Sind alle Scripte vor­han­den, lädt man sei­ne Bilddateien auf den Webserver und ruft das Hauptscript auf:./upall.sh

    Nun kann man zuse­hen, wie die Verbindungen auf­ge­baut und die Bilder nach­ein­an­der gela­den wer­den. Z. B. bei Shutterstock gibt es schon mal Transferraten von 4–5 Megabyte pro Sekunde – wenn gera­de wenig los ist.

  6. Sicherheitshinweis
    Vorsicht mit den Scripten und wo sie abge­legt wer­den! Sie ent­hal­ten Benutzername und Passwort für die Agenturen, das soll nicht in die fal­schen Hände gelan­gen!
    Ein Root-Server ist nicht für jeden geeig­net, da man die­sen selbst ver­wal­ten muss! Ein gema­nag­ter Hosting-Vertrag tut es da auch oder ein gema­nag­ter Server.
  7. Beispiele für geeig­ne­te Webserver-Angebote
    1&1 Virtual Server (L,XL,XXL)
    1&1 Homepage (Business Pro)
    Hetzner Webhosting (Level 19)
    Hetzner Root Server
    Hetzner Managed Server
* Affiliate-Link

9 Gedanken zu „Bildverteilung an Agenturen mittels FTP und Webserver“

  1. hmm … mit PHP bräuch­te man kei­nen SSH Zugang. dann wür­de theo­re­ti­sch jeder Webserver gehen … ich bas­tel auch mal né Lösung

  2. Gibt es kein FTP-Programm, mit dem die Bilder auto­ma­ti­sch an alle ver­tei­len kann? Ich habe zum Beispiel das Problem, wenn ich Sport- oder Politikbilder an die ver­schie­de­nen Redaktionen ver­sen­den will, muss ich jede Redaktionen ein­zel­nen anwäh­len in mei­nem ver­wen­de­tetn FTP-Programm „FileZila“. Also Redaktion A auf­ru­fen, Bilder rüber­schie­ben, Redaktionen B auf­ru­fen, Bilder rüber­zie­hen, etc. Danach läuft alles auto­ma­ti­sch, dau­ert aber viel zu lan­ge, bis ich alle ange­wählt habe. Kennt jemand ein FTP-Programm, mit dem man sowas machen kann?

    LG, KS

  3. so funk­tio­niert FTP lei­der nicht. Man kann Daten von Punkt A zu Punkt B über­tra­gen. Also jeweils eine Verbindung. Das was du mein­st soll gen­au mit die­ser Lösung im Beitrag erreicht wer­den. Also ein­mal hoch laden, an alle ver­tei­len.

  4. Danke für die inter­es­san­te Beschreibung.

    Eine ähn­li­che loka­le Lösung hat­te ich mir mal mit Windows gebas­telt.
    Ein alter aus­ge­dien­ter Rechner mit schnel­ler DSL-Verbindung, auf dem ich ver­schie­de­ne Verzeichnisse für jede Agentur ange­legt hat­te.
    Die Bilder habe ich vom Hauptrechner ein­fach in die ent­spre­chen­den Verzeichnisse kopiert.

    Mit Hilfe des FTP-Programms „Fling“ wur­den die Verzeichnisse dann auto­ma­ti­sch nach­ein­an­der abge­ar­bei­tet und die Bilder nach dem erfolg­rei­chen Upload durch „Fling“ gelöscht.

    Vorteil: nie­mand kann an die Passwörter ran. Der Upload klappt wun­der­bar neben­bei und stört so auch nicht den Hauptrechner. Bzw. umge­kehrt: ein Absturz des Hauptrechners stoppt nicht den Upload.

    Weiter braucht man kei­nen teu­ren Rechner, ein klei­ner mit Win2000 reicht da auch. Auch die Speicherkapazität hält sich in Grenzen, aber das macht zumin­dest bei den Festplattenpreisen auch nicht mehr so viel aus. Ich hat­te eine 80 GB-Platte ein­ge­baut, die reich­te mehr als aus. So kann man einen alten Rechner schnell mal zum Upload-Rechner aus­bau­en und muss ihn nicht unbe­dingt gleich ent­sor­gen.

    Ausserdem kann man die Uploadzeiten in die ver­kehrs­schwa­chen Zeiten legen (zumin­dest in Europa ist das Nachts).

    Nachteil: der Rechner muss natür­li­ch die gan­ze Nacht lau­fen und ver­braucht dabei auch Strom.

  5. war­um nicht ein­fach aus der welt der Entwicklung neh­men was es so schon gibt .. build bzw. deploy­ment­sys­te­me nennt sich sowas – ant (http://ant.apache.org/) zbsp. bringt das was benö­tigt wird mit dort gibt es genü­gend tasks bzgl. ftp, sftp usw… ein xml basier­tes sys­tem wie ant ist schnell auf die bedürf­nis­se ange­passt (lauf­fä­hi­ge javaum­ge­bung vor­aus­ge­setzt) und läuft platt­for­mun­ab­hän­gig.

  6. solan­ge man eine schnel­le Datenleitung hat kann man sowas machen, ich selbst habe die­se Aufgabe lie­ber Photoshelter gege­ben, der sein job sehr gut macht und super­schnel­le Leitungen hat. Da brau­che ich mei­ne eige­ne Leitung nicht stun­den­lang zu blo­ckie­ren. Seitdem es iSyn­di­ca gibt, hat sich das Thema auch rela­ti­viert, denn für wenig Geld in monat kann man sie getrost den Job machen las­sen für 1 cent pro Bild. Grüße

    Alex

  7. Hi,

    als Problem sehe ich aber noch ‚haen­gen­de‘ FTPs bzw. Fehlermeldungen – wir haben zB. einen Kunden der nur x MB/10min. rein­la­es­st, da muss der Upload oef­ter neu ange­schub­st wer­den – wie loest ihr das oder ande­re Abbrueche?

    Gruesse,

    c-v

  8. @Teezeit:

    Ich habe mir gera­de mal die Beschreibung zu Fling ange­schaut, da konn­te ich davon nichts lesen, dass das Programm gleich­zei­tig Bilder zu meh­re­ren Servern schi­cken kann. Kannst Du mir noch was genaue­res dazu sagen?

    DANKE !!!

    Liebe Grüße, Karsten

Kommentare sind geschlossen.