January 9, 20251 yr Ich suche gerade nach einer Möglichkeit, wie ich Dateien, die in einer gemounteten Freigabe auf meinem Windows PC liegen, per Automatismus in einen Share verschieben kann. Damit möchte ein filesystem changes triggern, mit denen Paperless Importe erkennt. In der Hoffnung, dass das besser funktioniert als Paperless komplett auf Polling mit festen Zeitintervallen umzustellen (CPU Last bei kurzen Intervallen / Keine direkte Verfügbarkeit von neuen Scannerdaten bei langen Intervallen. Da ich 0 Ahnung habe frage ich ChatGPT: Kann mir trotzdem jemand helfen, ob das so richtig ist oder erzeuge ich mir dann nur die dauerhafte CPU Last an einer anderen Stelle? Gut, ich könnte das per User Script Plugin natürlich nur periodisch machen, dann lebe ich damit, dass es meinentwegen nur jede Stunde oder jeden Tag guckt. Quote schreib mir ein skript für unraid, das mir dateien, die über einen smb mount amkommen in einen Unraid share verschiebt ChatGPT: ChatGPT Hier ist ein Bash-Skript, das Dateien von einem SMB-Mount in einen Unraid-Share verschiebt. Dieses Skript überwacht einen angegebenen Ordner (den SMB-Mount) und verschiebt Dateien in den Ziel-Share, sobald sie ankommen. Voraussetzungen Du musst sicherstellen, dass der SMB-Mount korrekt eingerichtet ist und auf deinem Unraid-System verfügbar ist. Das Skript benötigt inotifywait (Teil des inotify-tools Pakets), das installiert sein muss. Falls es nicht installiert ist, kannst du es mit apt-get install inotify-tools auf einer Debian-basierten Distribution installieren. Auf Unraid ist dies oft über den Nerd Pack Plugin möglich. Skript bash Code kopieren #!/bin/bash # Konfiguration SMB_MOUNT_PATH="/mnt/remotes/smb_mount" # Pfad zu deinem SMB-Mount UNRAID_SHARE_PATH="/mnt/user/unraid_share" # Pfad zu deinem Unraid-Share LOG_FILE="/var/log/smb_to_unraid.log" # Optional: Log-Datei für Fehler und Aktivitäten # Überprüfen, ob die Pfade existieren if [ ! -d "$SMB_MOUNT_PATH" ]; then echo "Fehler: SMB-Mount-Pfad $SMB_MOUNT_PATH existiert nicht!" | tee -a "$LOG_FILE" exit 1 fi if [ ! -d "$UNRAID_SHARE_PATH" ]; then echo "Fehler: Unraid-Share-Pfad $UNRAID_SHARE_PATH existiert nicht!" | tee -a "$LOG_FILE" exit 1 fi echo "Skript gestartet. Überwache $SMB_MOUNT_PATH ..." | tee -a "$LOG_FILE" # Überwache Änderungen im SMB-Mount inotifywait -m -r -e close_write,moved_to "$SMB_MOUNT_PATH" --format '%w%f' | while read FILE do if [ -f "$FILE" ]; then echo "$(date): Datei gefunden: $FILE. Verschiebe nach $UNRAID_SHARE_PATH ..." | tee -a "$LOG_FILE" # Datei verschieben mv "$FILE" "$UNRAID_SHARE_PATH" if [ $? -eq 0 ]; then echo "$(date): Datei erfolgreich verschoben: $FILE" | tee -a "$LOG_FILE" else echo "$(date): Fehler beim Verschieben der Datei: $FILE" | tee -a "$LOG_FILE" fi fi done Anleitung Pfad anpassen: Ändere die Variablen SMB_MOUNT_PATH und UNRAID_SHARE_PATH zu den tatsächlichen Pfaden auf deinem System. Skript ausführbar machen: bash chmod +x /pfad/zu/deinem_skript.sh Skript starten: bash /pfad/zu/deinem_skript.sh Hintergrundausführung: Möchtest du das Skript im Hintergrund laufen lassen, kannst du nohup verwenden: bash nohup /pfad/zu/deinem_skript.sh & Hinweise Fehlerüberprüfung: Das Skript schreibt Log-Einträge in die Datei /var/log/smb_to_unraid.log. Du kannst dies anpassen oder deaktivieren. Performance: Für größere SMB-Mounts oder hohe Dateimengen kann die Verwendung von inotifywait ressourcenintensiv werden. Automatisierung: Du kannst das Skript als Cronjob oder via Unraid-User-Scripts-Plugin automatisch starten lassen.
January 10, 20251 yr 5 hours ago, cottec said: Kann mir trotzdem jemand helfen, ob das so richtig ist oder erzeuge ich mir dann nur die dauerhafte CPU Last an einer anderen Stelle? ja, inotify... ist dafür gemacht und ja, jedes Programm erzeugt eine Last ob das jetzt mehr oder weniger ist wie das buildin polling ... teste es
January 10, 20251 yr Das was Importiert werden soll, landet das im consume Ordner von Paperless? Kannst du nicht einen SMB Mount einrichten der als Ziel direkt den Consume-Ordner hat? Oder sonst den SMB Mount anlegen und dann mittels user script alle x Minuten verschieben. Edited January 10, 20251 yr by Archonw
January 10, 20251 yr Author 1 hour ago, Archonw said: Das was Importiert werden soll, landet das im consume Ordner von Paperless? Genau 1 hour ago, Archonw said: Kannst du nicht einen SMB Mount einrichten der als Ziel direkt den Consume-Ordner hat? Kann man, mach ich auch gerade, aber Windows triggert keine Änderungen am Dateisystem, das inotifywait greift da also nicht. Paperless kann leider nicht manuell zum importieren angeregt werden. Paperless 1 hour ago, Archonw said: Oder sonst den SMB Mount anlegen und dann mittels user script alle x Minuten verschieben. Genau, wäre dann ja jetzt meine Anfrage quasi hier Konkret, ob das skript oben so taugt oder ob da ein dicker Schnitzer drin ist, was man so nicht im Unraid machen sollte oder was auch immer. Edited January 10, 20251 yr by cottec
January 10, 20251 yr den Sinn verstehe ich jetzt noch nicht so ganz ... ich hab einen Share mit einem Ordner (/consume unter paperless), da holt sich paperless ja von selbst alle ab ... und dir ging es (dachte ich zumindest) darum dies zu umgehen weil bei dir das nicht funktioniert (warum auch immer)
January 10, 20251 yr Author Ne ich möchte tatsächlich das Polling aus lassen, weil das ja dann das inotify außer Kraft setzt. Das find ich aber für alle anderen Quellen (Unraid Shares) eine schöne Sache, vor allem beim Scanner ist das echt gut, dass es dann in Echtzeit kommt. Keine Ahnung default 5s für eine Auswirkung auf die Performance hat... Auch im Vergleich zu inotify Edited January 10, 20251 yr by cottec
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.