This is an old revision of the document!
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.
- Öffnen Sie ein Terminal in Visual Studio Code (Menu
Teminal→New Terminal) - 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.