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

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.
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.1745306120.txt.gz
  • Last modified: 2025/04/22 07:15
  • by Ivo Blöchliger