Freigegebener Ordner mit Remote-Ordner synchronisieren

Brendianer

Benutzer
Mitglied seit
07. Feb 2008
Beiträge
42
Punkte für Reaktionen
7
Punkte
14
Und das würde in meinem konkreten Fall so aussehen?

if mount -l | grep //volume1/RoonServer/ROCK > /dev/null; then
echo YES
rsync -t -u -v -r --delete --delete-excluded --exclude="@*" --exclude="Thumb.db" --exclude=".DS_Store" /volume1/music/ /volume1/RoonServer/ROCK/ | tee /volume1/homes/Brendianer/Drive/$(date '+%Y-%m-%d_%H-%M')_log.txt

else
echo NO
fi

oder

if mount -l | grep //10.100.5.20/RoonServer/ROCK > /dev/null; then
echo YES
rsync -t -u -v -r --delete --delete-excluded --exclude="@*" --exclude="Thumb.db" --exclude=".DS_Store" /volume1/music/ /volume1/RoonServer/ROCK/ | tee /volume1/homes/Brendianer/Drive/$(date '+%Y-%m-%d_%H-%M')_log.txt

else
echo NO
fi
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Ich gehe von zweitem aus. Es ist wie folgt aufgebaut //<SERVER>/<FREIGABE>

Um das ganze zu überprüfen, kannst du doch einfach allein mount -l eingeben und dir die richtige Zeile heraussuchen, die in deinem Fall passt.
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Das bedeuted, dass die entfernte Serverfreigabe \\10.100.5.70\Data\Storage\InternalStorage auf dem lokalen Verzeichnis /volume1/RoonServer/ROCK deines NAS eingehängt ist.

Somit wirst du zur Überprüfung folgendes verwenden:
Bash:
if mount -l | grep "\\10.100.5.70\Data\Storage\InternalStorage" > /dev/null; then

Man kann aber auch gerne nach dem gesamten String suchen inklusive den Mount points:
Bash:
if mount -l | grep "\\10.100.5.70\Data\Storage\InternalStorage on /volume1/RoonServer/ROCK" > /dev/null; then

Gib es zu da hättest du jetzt selbst drauf kommen können, oder? ;)
 

Brendianer

Benutzer
Mitglied seit
07. Feb 2008
Beiträge
42
Punkte für Reaktionen
7
Punkte
14
Nicht so sicher...
Habe Variante 2 gewählt und erhalte diese Meldung:

grep: Invalid back reference
NO

Könnten das die Backslashes sein? Du hast im ursprünglichen Beispile Slashes verwendet. Im letzten Post Backslashes...
 

Nixnuzz

Benutzer
Mitglied seit
16. Jan 2024
Beiträge
217
Punkte für Reaktionen
68
Punkte
28
MMn sollte das ausreichen für den grep-Ausdruck (der Rest muss natürlich trotzdem):

mount -l | grep "/volume1/RoonServer/ROCK"

Er liefert nur den Wert "wahr", wenn dieses Verzeichnis in der Ausgabe von mount auftaucht - und das tut es nur, wenn die Freigabe tatsächlich eingehängt ist.

Btw: grep findet:
volume1/RoonServer/Rock
/volume1/Roonserver/Rock

aber nicht:
//volume1/RoonServer/Rock
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Im ursprünglichen Beispiel habe ich Slashes verwendet, weil ich das Beispiel auf einer meiner Linux Maschinen getestet habe und ich bereits wusste, dass auf der Syno kein SMB Mount existiert. Dort werden Slashes angezeigt wie ich es auch erwarten würde.

Okay ich verstehe. Ich war wieder einmal naiv genug um zu glauben, dass ich den Befehl mit den Backslashes sofort liefern kann.
Jetzt musste ich selbst erst einmal damit herumspielen, um herauszufinden wie es richtig funktioniert.

Versuche doch bitte einmal folgendes:

Bash:
mount -l | grep '\\'10.100.5.70'\\'Data'\\'Storage'\\'InternalStorage" on /volume1/RoonServer/ROCK"
 

Brendianer

Benutzer
Mitglied seit
07. Feb 2008
Beiträge
42
Punkte für Reaktionen
7
Punkte
14
Dies gibt YES aus:

if mount -l | grep '\\'10.100.5.70'\\'Data'\\'Storage'\\'InternalStorage" on /volume1/RoonServer/ROCK" > /dev/null; then
echo YES
else
echo NO
fi

Wenn man im ersten Teil Anpassungen vornimmt, dann wird NO ausgegeben.
Nach "on..." kann stehen was will.

Sehe ich das richtig, dass das folglich nur einen Teil des Problems löst?
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Jetzt musst du mich mal gedanklich abholen.
a) weshalb möchtest du weder am ersten noch am zweiten Teil etwas anpassen?
b) weshalb sollte nach „on…“ deiner Meinung nach irgendetwas stehen können?

Mach doch bitte einmal konkrete Beispiele damit ich es verstehe.
 

Brendianer

Benutzer
Mitglied seit
07. Feb 2008
Beiträge
42
Punkte für Reaktionen
7
Punkte
14
Sorry, vielleicht zu wenig konkret.
Ich meinte: so wie ich das verstanden und ausprobiert habe, spielt nur der Eintrag vor "on" eine Rolle. Was dahinter steht hat keine Bedeutung.
Ich meine, es wird nur geprüft, ob das Laufwerk gemountet ist aber nicht wie und unter welchem Namen.
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Okay immer noch nicht konkret genug was du wie getestet hast. Ich hatte nach Beispielen gefragt was du an dem Suchstring geändert hast.
Dann mache ich jetzt ein paar Beispiele, um das ganze für dich zu durchleuchten.

Ich habe hierzu eine Datei ~/.tmp/mount.txt mit folgendem Inhalt angelegt.
Code:
\\10.100.5.70\Data\Storage\InternalStorage on /volume1/RoonServer/ROCK blabla foobar tmp 123

Anschließend führe ich Folgendes aus, um die Ausgabe des Befehls von mount -l nachzustellen, indem der Inhalt der Datei mit cat ~/.tmp/mount.txt ausgegeben wird und darin nach dem String gesucht wird.

1. Der Suchstring ist exakt der String wie er auch in der Datei vorkommt.
Code:
if cat ~/.tmp/mount.txt | grep '\\'10.100.5.70'\\'Data'\\'Storage'\\'InternalStorage" on /volume1/RoonServer/ROCK" > /dev/null; then echo YES; else echo NO; fi
# Ausgabe: YES

2. Verändern des ersten Teils des Strings vor "on..." -> Bei Storage setzen wir statt ein kleines "a" ein großes "A" ein.
Code:
if cat ~/.tmp/mount.txt | grep '\\'10.100.5.70'\\'Data'\\'StorAge'\\'InternalStorage" on /volume1/RoonServer/ROCK" > /dev/null; then echo YES; else echo NO; fi
#Ausgabe: NO

3. Wir schreiben nach dem "on..." irgendetwas hinein.
Code:
if cat ~/.tmp/mount.txt | grep '\\'10.100.5.70'\\'Data'\\'Storage'\\'InternalStorage" on irgendetwas" > /dev/null; then echo YES; else echo NO; fi
#Ausgabe: NO

Jetzt möchte ich bitte von dir konkrete Beispiele haben, woran es bei dir scheitert. Nach meinem Verständnis funktioniert das so wie erwartet.
 

Brendianer

Benutzer
Mitglied seit
07. Feb 2008
Beiträge
42
Punkte für Reaktionen
7
Punkte
14
Also noch konkreter:
1. Zeile so wie es bei mir ist: YES
2. Zeile die IP des NUC geändert. Den gibt es nicht. also NO
3. Zeile nach "on" den Pfad geändert "ROCK" in "ROK". Den gibt es nicht. Trotzdem YES
Oder versteh ich etwas falsch?

Screenshot 2024-02-15 104840.png
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Laut deinem Screenshot hast du "ROCK" in "ROC" geändert und das heißt du hast nur einen Buchstaben hinten gekürzt. Und somit wird ja dennoch der Rest gefunden, denn der Suchstring ist ja eine Teilmenge des gesamten Strings.

Hier farblich in der Ausgabe von grep dargestellt.
Der rot markierte Bereich ist der gefundene String. In beiden Fällen also korrekt und somit wird auch in deinem Fall YES ausgegeben.

1707991125461.png
 
  • Like
Reaktionen: Brendianer

Brendianer

Benutzer
Mitglied seit
07. Feb 2008
Beiträge
42
Punkte für Reaktionen
7
Punkte
14
Ok. das wusste ich nicht.
Habe einen Versuch so gemacht:

if mount -l | grep '\\'10.100.5.70'\\'Data'\\'Storage'\\'InternalStorage" on /volume1/RoonServer/ROCKK" > /dev/null; then
echo YES
else
echo NO
fi
...und das gibt dann folgerichtig NO aus.

Dieses Mail erhalte ich:

Der Aufgabenplaner hat eine geplante Aufgabe abgeschlossen.

Aufgabe: ROCK rsync
Start: Thu, 15 Feb 2024 11:17:31 +0100
Ende: Thu, 15 Feb 2024 11:18:11 +0100
Aktueller Status: 0 (Normal)
Standardausgabe/Fehler:
YES
sending incremental file list

sent 6,141,762 bytes received 11,550 bytes 155,780.05 bytes/sec
total size is 2,585,368,393,140 speedup is 420,158.83



Von BrendenNAS

Total happy!

Vielen Dank für all dei Bemühungen. Spannend zudem...
Ich werde das auch noch in einem Forum von ROON unter Quellenangabe posten, so dass vielleicht ein anderer Suchender schnell zur Lösung findet.
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Du kannst auch den Optionsschalter -w verwenden dann wird exakt nach dem Wort (Suchstring) gesucht und darf somit keine Teilmenge sein.

Hier mal ein Beispiel mit und ohne dem Optionsschalter -w

1707992514290.png
 
  • Like
Reaktionen: Brendianer

Brendianer

Benutzer
Mitglied seit
07. Feb 2008
Beiträge
42
Punkte für Reaktionen
7
Punkte
14
Wow noch besser.
Dann ist man wirlich sicher, dass genau der Ordner exisitiert.
 
  • Like
Reaktionen: luddi

Brendianer

Benutzer
Mitglied seit
07. Feb 2008
Beiträge
42
Punkte für Reaktionen
7
Punkte
14
Frage: könnte man auch einen Report generieren lassen, der auflistet, in welchen Ordnern es kein Folder.jpg hat?
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Die Suche einfach invertieren.

Code:
 -v, --invert-match
              Invertiert das Suchmuster, so dass alle Zeilen ausgewählt  werden,  die  nicht  auf
              MUSTER passen. (-v wird von POSIX gefordert.)
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat