Moven von einem SMB Share auf das Array


Pete_Stonehiller

Recommended Posts

Ich habe folgende Aufgabenstellung:

 

- Auf ein SMB Share (in Unraid bereits eingebunden) werden täglich Daten geschrieben

- Diese sollen alle 1x pro Tag vom SMB Share auf ein Share im Array verschoben (nicht kopiert) werden

 

Bin leider nicht fit in Linux, was Skripte etc. sofern nicht komplett fertig nutzbar für mich unbrauchbar macht. Gibt es ein Docker oder irgend eine Möglichkeit, diese Funktion abzubilden? Ich hab bisher immer nur Synchronisationen (ohne Möglichkeit des "Verschiebens") gefunden, was mir nicht wirklich hilft. Danke vor ab für eure Hilfe.

Link to comment
1 hour ago, Pete_Stonehiller said:

- Diese sollen alle 1x pro Tag vom SMB Share auf ein Share im Array verschoben (nicht kopiert) werden

Wo ist da für Dich der Unterschied? 

Ein SMB Share ist doch auch - je nach Einstellungen des Cache - ein Share auf dem Array.

 

1 hour ago, Pete_Stonehiller said:

Bin leider nicht fit in Linux, was Skripte etc. sofern nicht komplett fertig nutzbar für mich unbrauchbar macht. Gibt es ein Docker oder irgend eine Möglichkeit, diese Funktion abzubilden? Ich hab bisher immer nur Synchronisationen (ohne Möglichkeit des "Verschiebens") gefunden, was mir nicht wirklich hilft. Danke vor ab für eure Hilfe.

...einfach mal ein wenig bash Scripte lernen...der eigentliche Befehl ist der "move" Befehl. https://linuxhandbook.com/mv-command/

Du kannst in unRaid das Dynamix Scheduler Plugin und das User-Scripts Plugin nutzen um das zu automatisieren.

Link to comment
4 hours ago, Ford Prefect said:

Wo ist da für Dich der Unterschied? 

Ein SMB Share ist doch auch - je nach Einstellungen des Cache - ein Share auf dem Array.

 

...einfach mal ein wenig bash Scripte lernen...der eigentliche Befehl ist der "move" Befehl. https://linuxhandbook.com/mv-command/

Du kannst in unRaid das Dynamix Scheduler Plugin und das User-Scripts Plugin nutzen um das zu automatisieren.

 

Der Unterschied ist, dass der SMB Share "Remote" eingebunden ist. Das heißt er liegt nicht innerhalb meines Unraid Servers, sondern separat im Netzwerk. Daher gibt es dort keine Einstellungen für den Mover. Der Unterschied zwischen verschieben und kopieren sollte doch klar sein?

 

Unraid wird als einfache Alternative mit GUI "verkauft", es ist nicht so dass ich mich damit nicht befassen will - aber mir fehlen die Grundlagen in Linux um besondere Befehle zu erlernen. Da ich auch niemanden Fragen kann wenn mal was schief läuft, lasse ich so etwas lieber bleiben und frage eben, ob es bereits fertig Lösungen für mein Anliegen gibt. 

Link to comment
7 hours ago, Pete_Stonehiller said:

Auf ein SMB Share (in Unraid bereits eingebunden) werden täglich Daten geschrieben

was sind denn das für Daten ? Medien wie Filme, Serien, ... ? weil dafür gibt es fertige Lösungen.

 

ansonsten ist der Befehl schon recht simpel, nur bevor hier etwas einfach verschoben wird muss klar sein was passiert wenn ...

 

Daten vorhanden sind ?

mit Unterordner ? Dateistruktur ?

...

Link to comment
2 hours ago, Pete_Stonehiller said:
 
Der Unterschied ist, dass der SMB Share "Remote" eingebunden ist. Das heißt er liegt nicht innerhalb meines Unraid Servers, sondern separat im Netzwerk.

 


Dann bindest Du das remote Share über das unassigned devices plug-in in unraid ein, oder wie sonst genau?

[quote] Daher gibt es dort keine Einstellungen für den Mover. Der Unterschied zwischen verschieben und kopieren sollte doch klar sein?[/quote]

....na Du bist ja lustig....lässt wichtige Infos weg, weil natürlich jeder genau weiss, was Du da machst und spielst den Oberlehrer für Dinge, die Du selbst nicht mal angucken willst....
 

 

 

Quote
Unraid wird als einfache Alternative mit GUI "verkauft", es ist nicht so dass ich mich damit nicht befassen will - aber mir fehlen die Grundlagen in Linux um besondere Befehle zu erlernen. Da ich auch niemanden Fragen kann wenn mal was schief läuft, lasse ich so etwas lieber bleiben und frage eben, ob es bereits fertig Lösungen für mein Anliegen gibt. 


....und wenn mit den "Lösungen " was schief läuft was Du nicht verstehst, fragst Du dann wieder hier und wedelst mit dem Kaufvertrag?

Grundsätzlich ist es Integrationstechnisch die schlechtere Idee, die Daten über den unraid host vom remote share automatisch zeitgesteuert abzuholen (ich weiss, move). Wie soll unraid wissen, dass die Daten, die es sieht, in diesem Augenblick komplett sind? Besser wäre es, die "Intelligenz ' auf der anderen Seite zu implementieren, die wahrscheinlich besser/einfacher weiss, wann, welche Dateien zu moven sind/ ge-moved werden können. Du wärst nicht der Erste, der mit einem solchen Vorgehen ein paar Tage später feststellen muss, dass manche Dateien nicht komplett sind.

Gesendet von meinem SM-G780G mit Tapatalk

Edited by Ford Prefect
Link to comment
34 minutes ago, alturismo said:

was sind denn das für Daten ? Medien wie Filme, Serien, ... ? weil dafür gibt es fertige Lösungen.

 

ansonsten ist der Befehl schon recht simpel, nur bevor hier etwas einfach verschoben wird muss klar sein was passiert wenn ...

 

Daten vorhanden sind ?

mit Unterordner ? Dateistruktur ?

...

Folgender Fall:

2 Kameras laden sowohl Bilder als auch Videos auf das NAS der Fritzbox (SMB Share). 

 

Dabei werden Ordnerstrukturen Jahr/Monat/Tag automatisch angelegt.

 

Diese sollen 1x pro Tag auf Unraid geschoben werden, und in der Quelle daraufhin gelöscht werden. 

 

 

@Ford Prefect Genau, das SMB Share ist über unassigned Device eingebunden. 

Das sollte kein Angriff auf irgendjemand sein - ich wollte nur erläutern was ich suche. Vielleicht hat jemand exakt den selben usecase und kann mir eine fertige Lösung / einen Docker empfehlen. Das mit dem Kaufvertrag war darauf bezogen, dass ich nicht bei 0 mit Linux anfangen möchte um vielleicht 1 Zeile Skript die ich brauche selbstständig erstellen zu können. Eine fertige Skriptzeile mit einer kurzen Erklärung für was was steht wäre perfekt. Habe ich leider bisher jedoch in keinem Video oder Forum finden können. 

Link to comment

@Pete_Stonehiller...dann schau Dir mal LuckyBackup in den Community-Apps an. Ist ein GUI für rsync, inkl. der Möglichkeit das zeitgesteuert zu machen.

Um Dateien mit rsync zu moven, statt zu sync-en musst Du den Parameter "--remove-source-files" mit angeben. Kann man in Lucky-Backup in den Advanced / Kommandizeilen Modus machen.

Habe ich allerdings noch nicht selbst probiert....Versuch macht kluch @ich777 evtl. kannst Du da die entscheidende Einstellung beitragen?

Link to comment
3 minutes ago, Ford Prefect said:

"--remove-source-files"

 

Achtung: Löscht keine Verzeichnisse sondern nur Dateien. Musst noch einen find mit -type d -empty -delete anhängen. Im Grunde genommen läuft es auf etwas Ähnliches wie das hinaus:

 

rsync -av --remove-source-files <source> <target> && find <source> -type d -empty -delete

 

  • Thanks 1
Link to comment
2 hours ago, Pete_Stonehiller said:

Unraid wird als einfache Alternative mit GUI "verkauft", es ist nicht so dass ich mich damit nicht befassen will - aber mir fehlen die Grundlagen in Linux um besondere Befehle zu erlernen.

Wie soll man das verstehen? Sorry ich hinterfrag gerne, vergiss nicht das ist ein sehr spezielles Anliegen das du hier hast...

 

11 minutes ago, Ford Prefect said:

Habe ich allerdings noch nicht selbst probiert....Versuch macht kluch @ich777 evtl. kannst Du da die entscheidende Einstellung beitragen?

Mit luckyBackup weiß ich nicht ob es die beste Lösung ist...

 

Du könntest dir mit den user scripts ein wirklich einfaches script schreiben:

#!/bin/bash
# Copy files from source to destination
cp -R /mnt/remotes/DEINQUELLVERZEICHNIS /mnt/user/DEINZIELVERZEICHNIS

# Remove all files from source
rm -rf /mnt/remotes/DEINQUELLVERZEICHNIS/

 

Dieses script is glaub ich selbsterklärend...

 

Der erste Teil also 'cp' = copy, kopiert dir alle Dateien '-R' rekursiv, also inklusiver aller Unterordner vom share '/mnt/remotes/DEINQUELLVERZEICHNIS' nach '/mnt/user/DEINZIELVERZEICHNIS'

 

Der zweite Teil also 'rm' = remove, löscht alle Dateien '-rf' = rekursiv & force, also inklusive aller Unterordner vom share '/mnt/remotes/DEINQUELLVERZEICHNIS/'

 

Ich schreibs jetzt nur dazu, bitte pass mit remove und den Verzeichnissen immer auf mit dem kannst du schneller was löschen als du denkst.

  • Thanks 1
Link to comment
18 minutes ago, Ford Prefect said:

@Pete_Stonehiller...dann schau Dir mal LuckyBackup in den Community-Apps an. Ist ein GUI für rsync, inkl. der Möglichkeit das zeitgesteuert zu machen.

Um Dateien mit rsync zu moven, statt zu sync-en musst Du den Parameter "--remove-source-files" mit angeben. Kann man in Lucky-Backup in den Advanced / Kommandizeilen Modus machen.

Habe ich allerdings noch nicht selbst probiert....Versuch macht kluch @ich777 evtl. kannst Du da die entscheidende Einstellung beitragen?

Luckybackup hab ich drauf, aber der Befehl ist das was ich gesucht habe. Danke! Gibt es noch eine Möglichkeit eine Schleife einzubauen, dass er die Source nur bei erfolgreichem sync löscht?

Link to comment
5 minutes ago, ich777 said:

Du könntest dir mit den user scripts ein wirklich einfaches script schreiben:

#!/bin/bash
# Copy files from source to destination
cp -R /mnt/remotes/DEINQUELLVERZEICHNIS /mnt/user/DEINZIELVERZEICHNIS

# Remove all files from source
rm -rf /mnt/remotes/DEINQUELLVERZEICHNIS/

 

Dieses script is glaub ich selbsterklärend...

 

Der erste Teil also 'cp' = copy, kopiert dir alle Dateien '-R' rekursiv, also inklusiver aller Unterordner vom share '/mnt/remotes/DEINQUELLVERZEICHNIS' nach '/mnt/user/DEINZIELVERZEICHNIS'

 

Der zweite Teil also 'rm' = remove, löscht alle Dateien '-rf' = rekursiv & force, also inklusive aller Unterordner vom share '/mnt/remotes/DEINQUELLVERZEICHNIS/'

 

Ich schreibs jetzt nur dazu, bitte pass mit remove und den Verzeichnissen immer auf mit dem kannst du schneller was löschen als du denkst.

Das ist es, was ich gesucht habe. Ich habe jetzt noch was von "&&" gelesen, als Sicherheit dass die Daten auch kopiert wurden. Ich weiß aber nicht wo ich es einbauen kann / muss?! Hättest du da noch einen Rat für mich?

 

Wäre so richtig:

cp -r /mnt/Quelle /mnt/Ziel && rm -r /mnt/quelle ??

Edited by Pete_Stonehiller
Link to comment

@Pete_Stonehiller...siehe die Anmerkung von @hawihoneyzum rsync commando, oben.

Du musst die beiden Befehle in einer Zeile zusammen schreiben und das "&&" dazwischensetzen.

Allerdings könntest Du die beiden Befehle (cp + rm) durch ein einziges move ersetzen, so: 

#!/bin/bash
# Move files from source to destination
mv /mnt/remotes/DEINQUELLVERZEICHNIS/* /mnt/user/DEINZIELVERZEICHNIS

...beachte die leichten Unterschiede bei dem Quellverzeichnis ;-)

Link to comment
6 minutes ago, Pete_Stonehiller said:

Hättest du da noch einen Rat für mich?

Also hab ich nicht probiert aber du kannst:

 

#!/bin/bash
# Copy files from source to destination
if cp -R /mnt/remotes/DEINQUELLVERZEICHNIS /mnt/user/DEINZIELVERZEICHNIS ; then
  logger "Copy from share /mnt/remotes/DEINQUELLVERZEICHNIS to /mnt/user/DEINZIELVERZEICHNIS successfull!"
else
   /usr/local/emhttp/plugins/dynamix/scripts/notify -e "Copy Failed" -d "Copy from share /mnt/remotes/DEINQUELLVERZEICHNIS to /mnt/user/DEINZIELVERZEICHNIS failed!" -i "alert"
   exit 1
fi

# Remove all files from source
rm -rf /mnt/remotes/DEINQUELLVERZEICHNIS/

 

Das wäre jetzt wirklich sehr vereinfacht gemacht, wenn das 'cp' fehl schlägt dann steigt er aus (eben wegen 'exit 1'  = Fehler) und gibt einen Fehler im unRAID GUI aus, wenn alles geklappt hat schreibt er ins Syslog den Eintrag von 'logger'.

 

Vergiss aber nicht wenn du den seltenen Fall hast das deine Fritzbox sich disconnected von unRAID und dann wieder connected dann könnte es sein das er trotzdem alles löscht weil eben kein Fehler, aber das müsste wirklich schon ein blöder Zufall sein.

Link to comment
3 minutes ago, ich777 said:

Das funktioniert aber nur bei Dateien die im Ziel nicht vorhanden sind. 'mv' ersetzt keine Dateien, deshalb 'cp'

...da das wohl Datein von Kameras sind, die noch dazu in Ordnern mit "Zeitstempel" im Namen stecken, denke ich eben, das ist unwahrscheinlich, dass es Dubletten gibt.

Ein "cp" würde die auch überschreiben/ersetzen, was evtl. ja garnicht gewollt ist ;-)

 

Link to comment
1 minute ago, Ford Prefect said:

Ein "cp" würde die auch überschreiben/ersetzen, was evtl. ja garnicht gewollt ist ;-)

Kann man drüber Streiten... :D

Mir ist 'cp' meistens lieber und anschließendes entfernen.

 

Man könnte das mit 'if' auch mit 'mv' machen:

#!/bin/bash
# Move files from source to destination
if mv /mnt/remotes/DEINQUELLVERZEICHNIS/* /mnt/user/DEINZIELVERZEICHNIS/ ; then
  logger "Move from share /mnt/remotes/DEINQUELLVERZEICHNIS to /mnt/user/DEINZIELVERZEICHNIS successfull!"
else
   /usr/local/emhttp/plugins/dynamix/scripts/notify -e "Move Failed" -d "Move from share /mnt/remotes/DEINQUELLVERZEICHNIS to /mnt/user/DEINZIELVERZEICHNIS failed!" -i "alert"
   exit 1
fi

 

Link to comment
3 minutes ago, Ford Prefect said:

...da das wohl Datein von Kameras sind, die noch dazu in Ordnern mit "Zeitstempel" im Namen stecken, denke ich eben, das ist unwahrscheinlich, dass es Dubletten gibt.

Ein "cp" würde die auch überschreiben/ersetzen, was evtl. ja garnicht gewollt ist ;-)

 

Die Dateien sind save keine Dubletten, die Ordner jedoch schon. Spielt das eine Rolle?! Die Ordnerstruktur muss ja mit kopiert werden /2021/09/29/datei

Link to comment

Ich hab jetzt folgendes zusammengefügt. Bitte um Prüfung, da ich jetzt mehrere Varianten gesehen habe. Nicht dass ich was durcheinander werfe. /* brauch ich nicht bei der Quelle des cp Befehls? 

 

#!/bin/bash
cp -r /mnt/remotes/192-168-178-1_FRITZ.NAS/SanDisk-CruzerBlade-01/Hof2 /mnt/user/Transfer/Test_CAM && rm -r /mnt/remotes/192-168-178-1_FRITZ.NAS/SanDisk-CruzerBlade-01/Hof2

Edited by Pete_Stonehiller
Link to comment
1 hour ago, Pete_Stonehiller said:

Ich hab jetzt folgendes zusammengefügt. Bitte um Prüfung, da ich jetzt mehrere Varianten gesehen habe. Nicht dass ich was durcheinander werfe. /* brauch ich nicht bei der Quelle des cp Befehls? 

 

#!/bin/bash
cp -r /mnt/remotes/192-168-178-1_FRITZ.NAS/SanDisk-CruzerBlade-01/Hof2 /mnt/user/Transfer/Test_CAM && rm -r /mnt/remotes/192-168-178-1_FRITZ.NAS/SanDisk-CruzerBlade-01/Hof2

...bei "cp" ein "-R" ... beim "rm" ein "-rf" ... hinten an das Verzeichnis beim "rm" noich ein "/"...wie oben von @ich777 schon angegeben...Linux ist Goss-/Kleinschreibungs-Sensitiv, auch in Parametern der Befehle.

Also: 

cp -R /mnt/remotes/192-168-178-1_FRITZ.NAS/SanDisk-CruzerBlade-01/Hof2 /mnt/user/Transfer/Test_CAM && rm -rf /mnt/remotes/192-168-178-1_FRITZ.NAS/SanDisk-CruzerBlade-01/Hof2/

Du kopierst jetzt das, was *unterhalb* "..../Hof2" liegt in das Verzeichnis ".../Test_CAM" ... also das Verzeichnis "Hof2" fehlt dann im Ziel und bleibt bei der Quelle erhalten...willst Du das?

 

P.S.: ...Kamerabilder auf nen kleinen USB-Stick sichern ist ne kurzlebige Idee ;-)

Edited by Ford Prefect
Link to comment
33 minutes ago, ich777 said:

Darf ich hier nochmal einharken, wie laden die Kameras das auf die Fritzbox?

Warm lädst du es nicht gleich nach unRAID hoch in einen SMB share?

Per FTP Upload. 

 

Aus 2 Gründen. 

 

Grund 1

Wenn ich unraid (weswegen auch immer das Mal sein muss...) neustarte, startet mein Array nicht weil die Kameras im Sekunden Takt versuchen darauf zuzugreifen (bevor das Array hochgefahren ist) was dazu führt, dass es gar nicht mehr hochfährt. Das Problem hat mich schon Tage meines Lebens + Nerven gekostet, bis ich das Problem ermittelt hatte....

 

Grund 2

All meine VMs und Docker laufen Cache only (nix wichtiges drauf, alle Configs und vdisk Backups werden im Array gespeichert). Da meine Kameras gefühlt alle 2 Minuten ein Bild hochladen, kann die dazugehörige Array Platte + 2 Parity Disks nicht in den Spin Down gehen, was mich grob 20 Watt dauerhaft kostet, also knapp 50€ pro Jahr. 

 

Beide Gründe zusammen, waren für mich der Anstoß nach einer Option B zu suchen. 

Link to comment
3 minutes ago, Ford Prefect said:

...bei "cp" ein "-R" ... beim "rm" ein "-rf" ...wie oben von @ich777 schon angegeben...Linux ist Goss-/Kleinschreibungs-Sensitiv, auch in Parametern der Befehle.

Du koperst jetzt das, was *unterhalb* "..../Hof2" liegt in das Verzeichnis ".../Test_CAM" ... also das Verzeichnis "Hof2" fehlt dann im Ziel...willst Du das?

 

P.S.: ...Kamerabilder auf nen kleinen USB-Stick sichern ist ne kurzlebige Idee ;-)

Ich hab es jetzt so ausprobiert wie ich es gepostet habe und es funktioniert. Das mit dem force muss ich noch einbauen. Was ist der Unterschied zwischen -r und -R? 

Tatsächlich Kopiert er mir aber das Verzeichnis "Hof2" mit und löscht es in der Quelle 🤔 Ich kann mich mit beidem arrangieren, aber gut zu wissen woran es liegt dass es das tut. image.thumb.png.6ff69bb5d8e5d47945d6280c7708ae82.png

 

Kurzlebig im Sinne von schnell den TBW des Flashspeichers erreicht?

Link to comment

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

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.