Bildverteilung an Agenturen mittels FTP und Webserver

Heute gibt es mal etwas Sinnvolles zum Basteln für die Informatiker, Programmierer und anderen IT-Berufler unter Euch.
Im Blog von Dreamstime hatte der Softwareentwickler Marco Schwarz mal auf englisch eine Anleitung gepostet, wie man mittels eines eigenen Webservers ein Foto einfach automatisch an verschiedene Bildagenturen schicken kann. Ich bat ihn, diese Anleitung mal ins Deutsche zu übertragen. Viel Spaß beim Lesen und Danke an Marco.
Viele Kabel in Hand
_______ab_hier_schreibt_Marco_____________
Wer kennt das nicht? Da hat man eine arbeitsreiche Woche hinter sich und eine Menge Bilder auf der Festplatte – und nun wollen diese zu den verschiedenen Bildagenturen.
Nehmen wir mal an, 50 Bilder mit einer durchschnittlichen Dateigröße von je 8MB sind zu verteilen. Das sind 400MB die zu jeder Agentur geladen werden müssen. In meinem Fall wäre dies bei 8 Agenturen ein Transfervolumen von ca. 3.2 Gigabyte.
Mit dem ‚traditionellen Weg‘, also Upload zu jeder einzelnen Agentur per FTP-Client, dauert dies bei einer 16MBit DSL-Leitung ca. 9 Stunden (bei 100KB Upload-Geschwindigkeit).
Um dies zu beschleunigen, hatte ich die Idee, meinen Webserver zur Verteilung zu benutzen. Er steht im 1&1-Rechenzentrum und hat eine etwas schnellere Anbindung als ich zu Hause 😉

Zwei Voraussetzungen gibt es für die von mir beschriebene Methode:

  • Der Webserver läuft mit Linux
  • Ein Zugang per SSH ist möglich

Wem das alles nichts sagt oder wer sich keinen Webserver zulegen will, der sollte sich mal picworkflow* ansehen, das Prinzip ist ähnlich.

Nun aber zum Verteilen der Bilder:
  1. Verzeichnis anlegen
    Zuerst sollte man sich ein Verzeichnis für die benötigten Scripte (siehe 2.) sowie die Bilddateien anlegen. Darauf achten, daß dieses nicht im Web-Verzeichnis liegt, wo über den Browser darauf zugegriffen werden kann – ansonsten könnte jemand auf die Benutzer/Passwortinformationen zugreifen!
  2. Scripte anlegen
    Jede Seite erhält ein kleines Script, mit dem die Bilder aus dem aktuellen Verzeichnis zur Agentur geladen werden. Das sieht dann z.B. für die Agentut 123rf so aus:— Start up123rf.sh —

    #!/usr/bin/expect
    set timeout -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ürlich nicht mit in das Script.

    Einfach Benutzername und Passwort durch die eigenen Werte ersetzen und schon wird heftig hochgeladen.
    In der spawn-Zeile wird einfach für jede Agentur der entsprechende FTP-Server eingetragen.
    Eventuell müssen die expect-Zeilen etwas angepasst werden, falls der FTP-Server der Agentur andere Meldungen ausgibt.

    Wenn mehrere Dateitypen geladen werden sollen, einfach weitere expect/send für das mput ergänzen, das kann dann z.B. so aussehen:

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

    Muss in ein Unterverzeichnis auf dem FTP-Server gewechselt werden, folgendes Kommando anpassen und vor die mput-Befehle einfügen:

    expect „ftp>“
    send „cd ein_ftp_unterverzeichnisn“

  3. Liste einiger 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üssen die FTP-Zugänge noch bei der jeweiligen Agentur freigeschaltet werden, falls man bis jetzt nur mit dem Webinterface geladen hat.
  4. Haupt-Script zum Aufruf der einzelnen Scripte anlegen
    Man kann die Einzelscripte natürlich von Hand aufrufen, schneller gehts aber mit noch einem kleinen 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 variiert natürlich je nach belieferten Agenturen. Die Namen der Scripte müssen denen entsprechen, die bei Schritt zwei vergeben wurden.

    Zum Schluss für alle Scripte den Befehl

    chmod 700 *.sh

    ausführen, damit sie ausführbar, aber nicht für jeden lesbar sind.

  5. Bilder verteilen
    Jetzt kommts: Sind alle Scripte vorhanden, lädt man seine Bilddateien auf den Webserver und ruft das Hauptscript auf:./upall.sh

    Nun kann man zusehen, wie die Verbindungen aufgebaut und die Bilder nacheinander geladen werden. Z. B. bei Shutterstock gibt es schon mal Transferraten von 4-5 Megabyte pro Sekunde – wenn gerade wenig los ist.

  6. Sicherheitshinweis
    Vorsicht mit den Scripten und wo sie abgelegt werden! Sie enthalten Benutzername und Passwort für die Agenturen, das soll nicht in die falschen Hände gelangen!
    Ein Root-Server ist nicht für jeden geeignet, da man diesen selbst verwalten muss! Ein gemanagter Hosting-Vertrag tut es da auch oder ein gemanagter Server.
  7. Beispiele für geeignete 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äuchte man keinen SSH Zugang. dann würde theoretisch jeder Webserver gehen … ich bastel auch mal ne Lösung

  2. Gibt es kein FTP-Programm, mit dem die Bilder automatisch an alle verteilen kann? Ich habe zum Beispiel das Problem, wenn ich Sport- oder Politikbilder an die verschiedenen Redaktionen versenden will, muss ich jede Redaktionen einzelnen anwählen in meinem verwendetetn FTP-Programm „FileZila“. Also Redaktion A aufrufen, Bilder rüberschieben, Redaktionen B aufrufen, Bilder rüberziehen, etc. Danach läuft alles automatisch, dauert aber viel zu lange, bis ich alle angewählt habe. Kennt jemand ein FTP-Programm, mit dem man sowas machen kann?

    LG, KS

  3. so funktioniert FTP leider nicht. Man kann Daten von Punkt A zu Punkt B übertragen. Also jeweils eine Verbindung. Das was du meinst soll genau mit dieser Lösung im Beitrag erreicht werden. Also einmal hoch laden, an alle verteilen.

  4. Danke für die interessante Beschreibung.

    Eine ähnliche lokale Lösung hatte ich mir mal mit Windows gebastelt.
    Ein alter ausgedienter Rechner mit schneller DSL-Verbindung, auf dem ich verschiedene Verzeichnisse für jede Agentur angelegt hatte.
    Die Bilder habe ich vom Hauptrechner einfach in die entsprechenden Verzeichnisse kopiert.

    Mit Hilfe des FTP-Programms „Fling“ wurden die Verzeichnisse dann automatisch nacheinander abgearbeitet und die Bilder nach dem erfolgreichen Upload durch „Fling“ gelöscht.

    Vorteil: niemand kann an die Passwörter ran. Der Upload klappt wunderbar nebenbei und stört so auch nicht den Hauptrechner. Bzw. umgekehrt: ein Absturz des Hauptrechners stoppt nicht den Upload.

    Weiter braucht man keinen teuren Rechner, ein kleiner mit Win2000 reicht da auch. Auch die Speicherkapazität hält sich in Grenzen, aber das macht zumindest bei den Festplattenpreisen auch nicht mehr so viel aus. Ich hatte eine 80 GB-Platte eingebaut, die reichte mehr als aus. So kann man einen alten Rechner schnell mal zum Upload-Rechner ausbauen und muss ihn nicht unbedingt gleich entsorgen.

    Ausserdem kann man die Uploadzeiten in die verkehrsschwachen Zeiten legen (zumindest in Europa ist das Nachts).

    Nachteil: der Rechner muss natürlich die ganze Nacht laufen und verbraucht dabei auch Strom.

  5. warum nicht einfach aus der welt der Entwicklung nehmen was es so schon gibt .. build bzw. deploymentsysteme 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 basiertes system wie ant ist schnell auf die bedürfnisse angepasst (lauffähige javaumgebung vorausgesetzt) und läuft plattformunabhängig.

  6. solange man eine schnelle Datenleitung hat kann man sowas machen, ich selbst habe diese Aufgabe lieber Photoshelter gegeben, der sein job sehr gut macht und superschnelle Leitungen hat. Da brauche ich meine eigene Leitung nicht stundenlang zu blockieren. Seitdem es iSyndica gibt, hat sich das Thema auch relativiert, denn für wenig Geld in monat kann man sie getrost den Job machen lassen für 1 cent pro Bild. Grüße

    Alex

  7. Hi,

    als Problem sehe ich aber noch ‚haengende‘ FTPs bzw. Fehlermeldungen – wir haben zB. einen Kunden der nur x MB/10min. reinlaesst, da muss der Upload oefter neu angeschubst werden – wie loest ihr das oder andere Abbrueche?

    Gruesse,

    c-v

  8. @Teezeit:

    Ich habe mir gerade mal die Beschreibung zu Fling angeschaut, da konnte ich davon nichts lesen, dass das Programm gleichzeitig Bilder zu mehreren Servern schicken kann. Kannst Du mir noch was genaueres dazu sagen?

    DANKE !!!

    Liebe Grüße, Karsten

Kommentare sind geschlossen.