Pete_Stonehiller Posted September 29, 2021 Share Posted September 29, 2021 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. Quote Link to comment
Ford Prefect Posted September 29, 2021 Share Posted September 29, 2021 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. Quote Link to comment
Pete_Stonehiller Posted September 29, 2021 Author Share Posted September 29, 2021 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. Quote Link to comment
alturismo Posted September 29, 2021 Share Posted September 29, 2021 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 ? ... Quote Link to comment
Ford Prefect Posted September 29, 2021 Share Posted September 29, 2021 (edited) 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 September 29, 2021 by Ford Prefect Quote Link to comment
Pete_Stonehiller Posted September 29, 2021 Author Share Posted September 29, 2021 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. Quote Link to comment
hawihoney Posted September 29, 2021 Share Posted September 29, 2021 3 minutes ago, Pete_Stonehiller said: Habe ich leider bisher jedoch in keinem Video oder Forum finden können. Such mal in diesem Board nach dem Plugin "User Scripts". Mit dem Plugin kann jedes Skipt zeitgesteuert aktiviert werden. Fehlt nur noch der passende Befehl fürs Verschieben. Den trägst Du dann dort ein. Quote Link to comment
Ford Prefect Posted September 29, 2021 Share Posted September 29, 2021 @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? Quote Link to comment
hawihoney Posted September 29, 2021 Share Posted September 29, 2021 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 1 Quote Link to comment
ich777 Posted September 29, 2021 Share Posted September 29, 2021 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. 1 Quote Link to comment
Pete_Stonehiller Posted September 29, 2021 Author Share Posted September 29, 2021 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? Quote Link to comment
Pete_Stonehiller Posted September 29, 2021 Author Share Posted September 29, 2021 (edited) 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 September 29, 2021 by Pete_Stonehiller Quote Link to comment
Ford Prefect Posted September 29, 2021 Share Posted September 29, 2021 @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 Quote Link to comment
ich777 Posted September 29, 2021 Share Posted September 29, 2021 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. Quote Link to comment
ich777 Posted September 29, 2021 Share Posted September 29, 2021 Just now, Ford Prefect said: Allerdings könntest Du die beiden Befehle (cp + rm) durch ein einziges move ersetzen, so: Das funktioniert aber nur bei Dateien die im Ziel nicht vorhanden sind. 'mv' ersetzt keine Dateien, deshalb 'cp' Quote Link to comment
Ford Prefect Posted September 29, 2021 Share Posted September 29, 2021 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 Quote Link to comment
ich777 Posted September 29, 2021 Share Posted September 29, 2021 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... 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 Quote Link to comment
Pete_Stonehiller Posted September 29, 2021 Author Share Posted September 29, 2021 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 Quote Link to comment
Pete_Stonehiller Posted September 29, 2021 Author Share Posted September 29, 2021 (edited) 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 September 29, 2021 by Pete_Stonehiller Quote Link to comment
ich777 Posted September 29, 2021 Share Posted September 29, 2021 1 hour ago, Pete_Stonehiller said: 2 Kameras laden sowohl Bilder als auch Videos auf das NAS der Fritzbox (SMB Share). 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? Quote Link to comment
Ford Prefect Posted September 29, 2021 Share Posted September 29, 2021 ...wahrscheinlich weil sein unraid nicht immer läuft 1 Quote Link to comment
Ford Prefect Posted September 29, 2021 Share Posted September 29, 2021 (edited) 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 September 29, 2021 by Ford Prefect Quote Link to comment
Pete_Stonehiller Posted September 29, 2021 Author Share Posted September 29, 2021 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. Quote Link to comment
Pete_Stonehiller Posted September 29, 2021 Author Share Posted September 29, 2021 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. Kurzlebig im Sinne von schnell den TBW des Flashspeichers erreicht? Quote Link to comment
mgutt Posted September 29, 2021 Share Posted September 29, 2021 2 minutes ago, Pete_Stonehiller said: Was ist der Unterschied zwischen -r und -R? Bei cp gibt es ausnahmsweise keinen Unterschied: https://man7.org/linux/man-pages/man1/cp.1.html Es gibt aber viele Kommandos, wo die Schreibweise unterschiedliche Aktionen auslöst. Quote Link to comment
Recommended Posts
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.