Backup mit rsyn. Warten bis Datein geladen

winniwinter

Semiprofi
Thread Starter
Mitglied seit
16.04.2006
Beiträge
1.807
Hi,

ich habe zwar OSX installiert, aber ich denke ich bin hier besser aufgehoben. Ich habe ein bash script, dass ausgeführt werden soll, wenn sich in einem bestimmten Ordner etwas ändert.

Konkret geht es um meinen Musikordner. Wenn dort neue Dateien dazukommen, soll das script starten und mittels rsync die Daten auf meinen Server laden.

Nun habe ich das Problem, dass rsync nie alle Files kopiert, da es glaube ich zu schnell ist. Bedeutet, das erste Lied wird importiert, Script startet, bis dahin sind vlt 4 Lieder importiert, Script wird beendet..
Ein einfaches sleep x, habe ich zwar schon eingebaut aber das ist mir zu ungenau.

Ich hätte gern, dass vor dem rsync befehl in einer while-schleife die ordner größe geprüft wird. verändert sie sich nicht mehr, sind alle dateien kopiert und nun soll rsync starten

so sieht bisher mein script aus:

#!/bin/sh

PROG=$0
SRC="'.../Music/iTunes/iTunes Media/Music'"
DST="/Volumes/Musik/itunes/"
CMD="eval rsync -av --progress --delete $SRC $DST"

if [ ! -r $SRC ]; then
/usr/bin/logger -t $PROG "Source $SRC not readable - Cannot start the sync process"
exit;
fi

if [ ! -w $DST ]; then
/usr/bin/logger -t $PROG "Destination $DST not writeable - Cannot start the sync process"
exit;
fi
/usr/bin/logger -t $PROG "Start rsync"
sleep 20;
$CMD
/usr/bin/logger -t $PROG "End rsync"

exit 0

spontan habe ich da den Befehl du gefunden.
wäre du -sm evtl das richtige?

---------- Beitrag hinzugefügt um 09:06 ---------- Vorheriger Beitrag war um 06:47 ----------

Code:
x="0"
y="1"

cd /PATH/TO/CHECK/SIZE

while [ "$x" != "$y" ]
do
x=$(du -sk)
y=$(du -sk)
done

$CMD


Habe mal gebastelt. Bin ein totaler bash DAU. Wenn es was besseres gibt, gebt mir bescheid. Werde es heute abend mal testen
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Muss es unbedingt automatisch starten?

Reicht es nicht wenn zu jeder vollen Stunde das Skript prüft ob sich was geändert hat? Wenn ja --> neue Dateien auf den Server pumpen.
 
Dann könnte doch wieder der Fall auftreten, dass Dateien gesynct werden, während noch auf die Platte kopiert wird.
 
Dann würde auf die neue volle Stunde gewartet werden und das Skript findet neue Dateien und lädt sie auf den Server. Man könnte zusätzlich das Skript in den Autostart legen.
 
Ich würde nicht prüfen ob sich die Größe noch ändert sondern eher ob der Ordner oder die Datei noch geöffnet ist:
Code:
if [ `lsof | grep roundcube | wc -l` -eq 0 ]
 then 
  echo "Datei/Ordner nicht in Benutzung"
  # Do some stuff
fi
 
hi, danke. das mit der filesize prüfen funktioniert 1A. Leider geht es trotzdem nicht wie gewollt.
Ich nutze einen osx service namens launchd, der anders wie die crontab, auch andere ereignisse kennt, wie eben zb. watched folder
Mein Watchpath liegt auf meinem iTunes Ordner. Dort ist die Musik nach "iTunes/Interpret/Album" abgelegt. Der Watchpath liegt auf "iTunes". Nun funktioniert das ganze leider nur wenn ein neuer Interpret hinzu kommt und nicht wenn ich ein neues Album eines bestehenden Interpreten reinlade, da sich im Watchpath nix ändert :fresse:

Ich habe das jetzt so gelöst, dass sobald mein musik folder des servers gemounted wird die Prüfung auf differenz erfolgt... zur Not tut das auch...

falls ihr doch noch eine Lösung habt, immer her damit :)
 
Zuletzt bearbeitet:
Die Lösung von Kuchenkerze ist doch sehr elegant und erfüllt alle gewünschten Kriterien.

Du kannst seine Version auch noch etwas umbauen, sodass zu erst gewartet wird, bis "lsof" keinen aktiven Zugriff mehr anzeigt, bis deine Synchronisierung gestartet wird ;)
 
Gibt es inotify auch unter OS-X? Wenn ja, könnte man einfach jede neu angelegte/geänderte Datei einzeln syncen oder z.B. sobald sich 1 Minute nichts mehr tut anfangen...
 
ich habe genau an gleichem interesse. Wenn Du das Script für Dich fertig gestellt hast, könntest Du es noch mal posten? Ich würde mir das gerne auch einmal ansehen :)
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh