Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Hilfe bei einem Skript, das einen SMB Mount überwacht und Daten dann auf einen Share kopiert

Featured Replies

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.

 

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

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 by Archonw

  • 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 by cottec

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 ...

 

image.png.0c487ae4ea82fa6bee52a5b9712aae00.png

 

und dir ging es (dachte ich zumindest) darum dies zu umgehen weil bei dir das nicht funktioniert (warum auch immer)

 

image.thumb.png.cf5f763b98bce56b1328cc351271af12.png

  • 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 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.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.