Ich hänge meine Frage mal hier an, um nicht unnötigerweise einen neuen Thread zu eröffnen:
Ich betreibe seit ein paar Monaten Paperless ngx unter Docker auf einem Windows-PC und habe (mit etwas KI-Unterstützung) zum Backup eine kleine Batch-Datei erstellt, die anscheinend funktioniert; jedenfalls landen die ZIP-Archive wie gewollt auf meinem PCLoud-Laufwerk. Da ich aber weitgehend blind nach Anleitung vorgegangen bin, wäre ich ruhiger, wenn jemand, der sich im Gegensatz zu mir damit auskennt, mal einen Blick auf die Datei werfen könnte, ob sie so in Ordnung ist, ob ich also im Notfall oder bei einem Rechnerumzug damit das System wiederherstellen könnte. Danke im Voraus!
@echo off
setlocal enabledelayedexpansion
echo ============================================
echo Paperless-ngx Komplett-Backup (Ziel: P:)
echo ============================================
set "base_dir=C:\Users\Administrator\paperless"
set "export_dir=%base_dir%\export"
:: NEU: Zielordner auf Laufwerk P:
set "target_dir=P:\paperless-backup"
cd /d "%base_dir%"
:: 0. Zielordner erstellen, falls er nicht existiert
if not exist "%target_dir%" mkdir "%target_dir%"
:: 1. Zeitstempel generieren
set "datestamp=%date:~-4%-%date:~-7,2%-%date:~-10,2%"
set "backup_name=paperless_backup_%datestamp%.zip"
:: 2. Export-Ordner vorbereiten (lokal auf C: für Geschwindigkeit)
if not exist "%export_dir%" mkdir "%export_dir%"
echo 1. Exportiere Dokumente (Paperless Exporter)...
docker compose exec webserver document_exporter ../export --delete
echo 2. Exportiere Datenbank (SQL-Dump)...
docker compose exec db pg_dumpall -U paperless > "%export_dir%\backup_datenbank.sql"
echo 3. Kopiere Konfigurationsdateien in den Export...
if exist "docker-compose.yml" copy /y "docker-compose.yml" "%export_dir%\"
if exist "docker-compose.yaml" copy /y "docker-compose.yaml" "%export_dir%\"
if exist ".env" copy /y ".env" "%export_dir%\"
echo 4. Erstelle ZIP-Archiv auf P: (Bitte warten)...
:: PowerShell packt nun direkt in das Zielverzeichnis auf P:
powershell -command "Compress-Archive -Path '%export_dir%\*' -DestinationPath '%target_dir%\%backup_name%' -Force"
:: 5. Prüfung und Aufräumen
if exist "%target_dir%\%backup_name%" (
echo.
echo ZIP-Datei erfolgreich erstellt: %target_dir%\%backup_name%
echo 5. Bereinige temporaeren Export-Ordner...
rd /s /q "%export_dir%"
mkdir "%export_dir%"
) else (
echo.
echo FEHLER: Die ZIP-Datei konnte nicht auf P: erstellt werden!
pause
exit /b
)
:: 6. Alte Backups auf P: löschen (älter als 30 Tage)
echo 6. Suche nach alten Backups auf P: (30 Tage)...
forfiles /p "%target_dir%" /m "paperless_backup_*.zip" /d -30 /c "cmd /c del @path" 2>nul
echo.
echo ============================================
echo Backup erfolgreich auf P: abgeschlossen!
echo ============================================
pause