lehrkraefte:blc:informatik:glf24:web:scp-workaround

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.
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).

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 git-bash Terminal in Visual Studio Code:
  • geben Sie das neue Kommando upload.bash ein.
  • Der ganze Inhalt vom aktuellen Verzeichnis humpfdidumpf wird auf den Server in den Ordner humpfdidumpf kopiert und die Berechtigungen auf dem Server automatisch gesetzt.

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 images mit dem Kommando cd images.
  • geben Sie das neue Kommando upload.bash humpfdidumpf ein.
  • Der ganze Inhalt vom aktuellen Verzeichnis images wird auf den Server in den Ordner humpfdidumpf kopiert und die Berechtigungen auf dem Server automatisch gesetzt.
  • lehrkraefte/blc/informatik/glf24/web/scp-workaround.txt
  • Last modified: 2025/05/12 18:51
  • by Ivo Blöchliger