upload.bash
Aus irgendwelchen Gründen werden die Berechtigungen auf dem Server falsch gesetzt, wenn von Windows aus mit scp ganze Ordner kopiert werden.
Folgendes bash-script kopiert den aktuellen Ordner rekursiv (d.h. mit allen Unterordnern) und setzt danach die Berechtigungen korrekt. Dieses soll als ~/bin/upload.bash gepeichert werden. Die Tilda (~) steht für Ihr Home-Verzeichnis, normalerweise C:\Users\hans.muster (grafisch wird Users oft auch als Benutzer angezeigt). Entweder speichern Sie untenstehenden Datei mit Rechtklick→Link speichern unter direkt am richtigen Ort (eventuell ist das Verzeichnis bin noch anzulegen), oder
gehen Sie dazu wie folgt vor:
- git-bash öffnen (oder Powershell geht auch).
- geben Sie folgende Kommandos ein:
cd mkdir -p bin code bin/upload.bash
Kopieren Sie dann folgenden Inhalt in die Datei:
- upload.bash
# Dieses bashscript kopiert den aktuellen Ordner # rekursiv auf den Server. # Optional kann ein Zielordner angegeben werden. PFAD=$(pwd) #echo Pfad ist ${PFAD} DIR=$(basename "${PFAD}") #echo Dir ist ${DIR} HOME=`realpath ~` if [ "$HOME" = "$PFAD" ]; then echo "Oops! Sie befinden sich im Verzeichnis $PFAD." echo "Dieses Verzeichnis wird nicht auf den Server kopiert!" echo "Wechseln Sie in das zu kopierende Verzeichnis!" exit fi # Entweder . (HOME) oder Argument als Zielordner if [ -z $1 ]; then TARGET="." else TARGET="$1" fi #echo Target ist ${TARGET} if [ "." != "${TARGET}" ]; then echo "ensuring target ${TARGET} exists" echo ssh ofi mkdir -p "\"${TARGET}\"" ssh ofi mkdir -p "\"${TARGET}\"" fi echo "Copying..." echo scp -r "${PFAD}" "ofi:${TARGET}" scp -r "${PFAD}" "ofi:${TARGET}" echo "Adjusting permissions..." echo ssh ofi chmod -R u+rwX,go+rX,go-w "${TARGET}/${DIR}" ssh ofi chmod -R u+rwX,go+rX,go-w "${TARGET}/${DIR}"
- Speichern Sie dann die Datei (File → Save) oder einfacher CtrlS.
Anwendungsbeispiele
upload.bash # Lädt das ganze aktuelle lokale Verzeichnis mit allen Unterverzeichnissen auf den Server hoch, in ein Verzeichnis mit gleichem Namen
upload.bash hello # Lädt das ganze aktuelle lokale Verzeichnis mit allen Unterverzeichnissen auf den Server hoch, als Unterverzeichnis im Verzeichnis hello (das nötigenfalls angelegt wird).
Ganzer Ordner kopieren
Voraussetzung: Sie haben den Ordner mit dem Code der aktuellen Webseite in Visual Studio Code geöffnet. Nehmen wir an, dieser Ordner heisse humpfdidumpf.
- geben Sie das neue Kommando
upload.bashein. - Der ganze Inhalt vom aktuellen Verzeichnis
humpfdidumpfwird auf den Server in den Ordnerhumpfdidumpfkopiert und die Berechtigungen auf dem Server automatisch gesetzt.
Ganzer Unterordner kopieren
Voraussetzung: Sie haben den Ordner mit dem Code der aktuellen Webseite in Visual Studio Code geöffnet. Nehmen wir an, dieser Ordner heisse humpfdidumpf.
Sie möchten den Unterordner images kopieren.
- Öffnen Sie ein Terminal in Visual Studio Code (Menu
Teminal→New Terminal) - wechseln Sie im Terminal ins Verzeichnis
imagesmit dem Kommandocd images. - geben Sie das neue Kommando
upload.bash humpfdidumpfein. - Der ganze Inhalt vom aktuellen Verzeichnis
imageswird auf den Server in den Ordnerhumpfdidumpfkopiert und die Berechtigungen auf dem Server automatisch gesetzt.

