Häufig habe ich schon Screenshots bei One-Click-Hostern hochgeladen um Probleme zu illustrieren. Mittlerweile bin ich aber bei uberspace und habe dort auch SSH-Zugriff also habe ich mir ein kleines Script geschrieben, das einzelne Dateien (sollte auch bei Ordnern funktionieren) direkt hochlädt. Da ich mich über einen public key authenifiziere kann ich das ganze auch schön automatisieren.
Ich bin jetzt nicht der Shell-Script-Profi, von daher hat das Ganze bestimmt noch Verbesserungspotenzial. Ich weiß auch nicht, ob man über falsche Eingaben evtl. Code zur Ausführung übergeben kann. Da ich das für mich selbst geschrieben habe und keine anderen es auf meinem Rechner nutzen können, habe ich es nicht darauf getestet. Schließlich werde ich mich nicht bemühen einen Weg dazu zu finden um meinen eigenen Rechner zu manipulieren. ;)
Vielleicht ist das Script aber für Leute, die noch weniger Ahnung vom scripten haben als ich, auch hilfreich oder vielleicht kann irgendjemand etwas hübscheres, besseres daraus basteln, weshalb ich beschlossen habe es hier zu veröffentlichen.
Damit das Script funktioniert wird realpath benötigt.
#! /bin/bash
ZIELPFAD='/var/www/upload' # Upload-Verzeichnis auf dem Server
KONTO='user@example.de' # SSH Zugangsdaten
URL='http://upload.example.de' # Zieladresse
if [ $# -ne 1 ]
then
echo Dieses Skript ist nur für die Übergabe einer Datei, bzw. eines Ordners, ausgelegt.
exit
fi
EINGABE=$(printf %q $1)
PFAD=$(realpath $EINGABE)
NAME=$(basename $EINGABE)
DATE=$(date +%Y-%m)
if [ -z $PFAD ]
then
exit
fi
if ssh $KONTO test -e \'$ZIELPFAD/$DATE/$NAME\'
then
echo Datei ist schon vorhanden und wurde nicht überschrieben.
else
rsync -avP --ignore-existing $PFAD $KONTO:\'$ZIELPFAD/$DATE/\'
echo
echo Gespeichert unter: $URL/$DATE/$NAME
fi
Das Script lädt die Datei an dem gewünschten Ort in den Ordner Jahr-Monat hoch und gibt die URL aus. Beispiel:
$ upload foo.bar
sending incremental file list
foo.bar
0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/1)
sent 101 bytes received 34 bytes 90.00 bytes/sec
total size is 0 speedup is 0.00
Gespeichert unter: http://upload.example.de/2014-01/foo.bar
[Update 2014-09-20]
Ich habe das Script mittlerweile etwas erweitert.