Blog Digitalgesellschaft Verwaltungsbetrieb Textarchiv Impressum
x
# Erstellt mit Hilfe von KI
# Remote Server IP
rserver=<###-###-#-###>
# Local backup location
lbackuploc=/<quelle>
# Local backup location
lbackuploc1=/<quelle2>
# Remote backup location Daten
rbackuploc=/<ziel>
# Remote backup location Medien
rbackuploc1=/<ziel2>
# Pfad zur exclude.txt-Datei
EXCLUDE_FILE="$(dirname "$0")/exclude.txt"
# Pfad zum Logverzeichnis
LOGFILE_DIR="/<speicherort>/log"
# Sicherstellen, dass das Logverzeichnis existiert
mkdir -p "$LOGFILE_DIR"
# Backup Daten
rsync -avz --info=progress2,stats \
--log-file="$LOGFILE_DIR/$(date +'%Y%m%d-%H%M%S')-daten.log" \
-e "ssh -T -c aes128-gcm@openssh.com -o Compression=no -x" \
"$lbackuploc" "$rserver:$rbackuploc" &
# Backup Medien
rsync -avz --info=progress2,stats --remove-source-files \
--exclude-from="$EXCLUDE_FILE" \
--log-file="$LOGFILE_DIR/$(date +'%Y%m%d-%H%M%S')-medien.log" \
-e "ssh -T -c aes128-gcm@openssh.com -o Compression=no -x" \
"$lbackuploc1" "$rserver:$rbackuploc1" &
# Hinweis: Das automatische Löschen von alten Backups sollte auf dem Remote-Server erfolgen.
# Beispiel (auskommentiert):
# ssh "$rserver" 'find /<ziel>/* -mtime +10 -exec rm {} \;'
Die Angaben sind den eigenen Verhältnissen entsprechend anzupassen.
xxxxxxxxxx
# Verzeichnis für Downloads abfragen
echo -n "Bitte gib das Verzeichnis für den Download ein (Standard: aktuelles Verzeichnis $(pwd)): "
read INPUT_DIR
# Falls keine Eingabe, aktuelles Verzeichnis setzen
if [ -z "$INPUT_DIR" ]; then
DOWNLOAD_DIR="$(pwd)"
else
DOWNLOAD_DIR="$INPUT_DIR"
fi
mkdir -p "$DOWNLOAD_DIR"
# Prüfen, ob eine urls.txt Datei existiert und URLs aus der Datei einlesen
if [ -f "urls.txt" ]; then
mapfile -t FILE_URLS < urls.txt
else
FILE_URLS=()
fi
# Zusätzliche URLs manuell eingeben
echo -n "Bitte gib eine oder mehrere URLs (durch Leerzeichen getrennt) ein: "
read -a INPUT_URLS
# Alle URLs kombinieren
URLS=("${FILE_URLS[@]}" "${INPUT_URLS[@]}")
# yt-dlp für jede URL ausführen
for URL in "${URLS[@]}"; do
yt-dlp \
--restrict-filenames \
-f "bestvideo[ext=mp4][vcodec^=avc]+bestaudio[ext=m4a]/bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio/best[ext=mp4]/best" \
-o "$DOWNLOAD_DIR/%(playlist_index)s-%(title)s.%(ext)s" \
--write-info-json \
--write-description \
--parse-metadata "title:%(artist)s - %(title)s" \
--embed-metadata \
--embed-thumbnail \
"$URL"
done
# Hinweis zur Nutzung
echo "Download abgeschlossen! Dateien gespeichert in: $DOWNLOAD_DIR"
Die urls.txt ist eine einfache Textdatei, in der jede URL Zeile für Zeile unter einander eingetragen wird (keine Leerzeichen, Tab).
xxxxxxxxxx
# System Update Script
# Erstellt mit Hilfe von KI
set -euo pipefail
# -e: Abbrechen bei Fehlern
# -u: Abbrechen bei Verwendung nicht gesetzter Variablen
# -o pipefail: Fehler in Pipelines korrekt erkennen
log() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $*"
}
log "Starte Systemaktualisierung..."
log "Aktualisiere APT-Paketlisten..."
sudo apt-get update
log "Führe vollständige Systemaktualisierung durch..."
sudo apt-get dist-upgrade -y
sudo apt-get upgrade -y
log "Entferne nicht mehr benötigte Pakete..."
sudo apt-get autoremove -y
log "Aktualisiere Snap-Pakete..."
if command -v snap &>/dev/null; then
sudo snap refresh
else
log "Snap nicht installiert. Überspringe."
fi
log "Aktualisiere Flatpak-Pakete..."
if command -v flatpak &>/dev/null; then
sudo flatpak update -y
else
log "Flatpak nicht installiert. Überspringe."
fi
# Optional: Kommentierung entfernen, wenn gewünscht
# log "Führe Release-Upgrade durch..."
# sudo do-release-upgrade
if [ -f /var/run/reboot-required ]; then
log "Neustart erforderlich. Starte System neu..."
sudo reboot
else
log "Kein Neustart erforderlich."
fi
log "Systemaktualisierung abgeschlossen."
x
# Erstellt mit Hilfe von KI
# Speichern als get-verzeichnisstruktur.sh
DIR_PATH="."
DEFAULT_OUTPUT_FILE="dirs.txt"
echo "Wählen Sie eine Option:"
echo "1. Sicherung der Verzeichnisstruktur"
echo "2. Wiederherstellung der Verzeichnisstruktur"
read -p "Eingabe (1 oder 2): " OPTION
case "$OPTION" in
1)
# Sicherung der Verzeichnisstruktur
read -p "Geben Sie den Namen der Ausgabedatei ein (Standard: $DEFAULT_OUTPUT_FILE): " OUTPUT_FILE
if [ -z "$OUTPUT_FILE" ]; then
OUTPUT_FILE="$DEFAULT_OUTPUT_FILE"
fi
find "$DIR_PATH" -type d > "$OUTPUT_FILE"
echo "Verzeichnisstruktur wurde in $OUTPUT_FILE gespeichert."
;;
2)
# Wiederherstellung der Verzeichnisstruktur
read -p "Geben Sie den Namen der Datei mit der Verzeichnisstruktur ein (Standard: $DEFAULT_OUTPUT_FILE): " DIRS_FILE
if [ -z "$DIRS_FILE" ]; then
DIRS_FILE="$DEFAULT_OUTPUT_FILE"
fi
if [[ ! -f "$DIRS_FILE" ]]; then
echo "Datei $DIRS_FILE nicht gefunden!"
exit 1
fi
while IFS= read -r line || [[ -n "$line" ]]; do
dir=$(echo "$line" | xargs)
if [[ -n "$dir" ]]; then
mkdir -p "$dir"
echo "Erstellt: $dir"
fi
done < "$DIRS_FILE"
;;
*)
echo "Ungültige Option. Bitte 1 oder 2 wählen."
exit 1
;;
esac
Wolfgang Kirk
Veröffentlicht: 2025-03-20, 08:00 Uhr aktualisiert: 16:45 Uhr, 2025-05-24