Upload-Script für den eigenen Webspace

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.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#! /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 ge­wünsch­ten 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.

Teilen: FB | G+ | TW | E-Mail

Hinterlasse einen Kommentar oder diskutiere im OSBN-Chat.

In den Kommentaren können folgende Formatierungen genutzt werden.