veroeffentliche_04.py: Upload mit rsync --delete und Nachpruefung
Der Anlass war messbar. Der Live-Stand vor dem Skript:
/OR/ 200
/OR/anhang-glossar-literatur.html 200 <- Leiche des vorigen Stands
/OR/anhang-glossar.html 404
/OR/notebooks.html 404
/OR/Notebooks_04.zip 404
/OR/Notebooks_04/ 403
scp -r ueberschreibt nur, es loescht nie - die alte Glossar-Seite bliebe
dauerhaft erreichbar. Das Zielverzeichnis vorher zu leeren waere die grobe
Antwort: Bricht die Uebertragung von 23 MB in 213 Dateien ab, ist die Website
tot. rsync --delete uebertraegt nur Geaendertes und entfernt genau das, was
verschwunden ist.
Der zweite Grund wiegt schwerer: Die Website hing wochenlang einen Bau
zurueck, ohne dass es auffiel. Vier Schritte:
1. Vorpruefung - ist eine Quelldatei neuer als die gebaute Website, Abbruch.
Ebenso: PDF der Website byte-genau wie das gebaute, Verzeichnis-
Weiterleitungen vorhanden (der Grund fuer den 403).
2. Probelauf - zaehlt Uebertragungen und Loeschungen. Mehr als 30 Loeschungen
brechen ab; das ist der Schutz gegen einen falschen Zielpfad, mit dem
--delete sonst ein fremdes Verzeichnis ausraeumt. --loeschgrenze hebt an.
3. Uebertragung (rsync -rltz --chmod=D755,F644 ueber ssh).
4. Nachpruefung - 14 Adressen per HTTP, Statuscode gegen Erwartung. Darunter
die Probe, dass die entfernte Seite wirklich 404 liefert.
Anmeldung per SSH-Schluessel, nicht per Passwort in der .env: rsync und scp
haben keine Passwort-Option, ein Passwort braeuchte sshpass und staende
waehrend der Uebertragung in der Prozessliste. Die .env (in .gitignore,
Vorlage .env.beispiel) enthaelt nur Host, Benutzer, Zielpfad und URL.
Beim ersten Test lief die Pruefung in eine irrefuehrende Meldung ("kein rsync
installiert"), waehrend in Wahrheit schon die Anmeldung fehlschlug. Die
Pruefung unterscheidet die Faelle jetzt am ssh-Rueckgabewert 255 und nennt
ssh-copy-id.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
567bfa799a
commit
d566cf8dac
5 changed files with 450 additions and 2 deletions
20
.env.beispiel
Normal file
20
.env.beispiel
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# Vorlage fuer .env - kopieren, ausfuellen, absichern:
|
||||
#
|
||||
# cp .env.beispiel .env && chmod 600 .env
|
||||
#
|
||||
# Gelesen von veroeffentliche_04.py. Hier steht KEIN Geheimnis: rsync und scp
|
||||
# haben keine Passwort-Option, die Anmeldung laeuft ueber den SSH-Schluessel.
|
||||
# Einmalig einrichten mit
|
||||
#
|
||||
# ssh-copy-id dschlueter@jamulix.de
|
||||
#
|
||||
# Danach fragt nichts mehr nach einem Passwort.
|
||||
|
||||
OR_HOST=jamulix.de
|
||||
OR_BENUTZER=dschlueter
|
||||
OR_ZIEL=/var/www/jamulix.de/html/OR/
|
||||
OR_URL=https://jamulix.de/OR/
|
||||
|
||||
# Optional - nur setzen, wenn vom Ueblichen abweichend:
|
||||
# OR_SSH_PORT=22
|
||||
# OR_SSH_KEY=~/.ssh/id_ed25519
|
||||
Loading…
Reference in a new issue