Ich verstehe eure beiden Posts nur sehr bedingt, habe aber mal versucht ein Beispiel zu geben:
2 Ordner in $HOME erstellen:
Es soll von temp1 nach temp2 "rsynct" werden, wegen der Größe gehts nur um kleine Dateien die aber zeitlich durch rsync Parameter "--bwlimit=" in die Länge gezogen werden,
das Erstellen dieser Dateien in ~/temp1/ (d1-3) erfolgt mit:
Code: Alles auswählen
cd ~/temp1
base64 /dev/urandom | dd of=d1 bs=1k count=300 #300k Größe, fürs Testen bitte hier die Größe variieren...
base64 /dev/urandom | dd of=d2 bs=1k count=50 #50k Größe
base64 /dev/urandom | dd of=d3 bs=1k count=20 #20k Größe
Ein gelabelter USB-Stick (backup_usbstick) soll dann nach dem Einstöpseln ein Skript ausführen,
die entsprechende udev-Regel sieht hier so aus, der Stick selbst dient nur als Auslöser:
KERNEL=="sd[g-i]1", SUBSYSTEM=="block", ENV{ID_FS_LABEL}=="backup_usbstick", ACTION=="add", \
RUN+="/bin/su -c '/usr/local/bin/pn_backup_usbstick %k %E{ID_FS_LABEL}' detix"
das Skript, gespeichert in "/usr/local/bin/pn_backup_usbstick" würde damit als user "detix" ausgeführt, Inhalt:
Code: Alles auswählen
#!/bin/bash
echo "rsync Test" >/tmp/rsync
rsync --bwlimit=10k -a ~/temp1/{d1,d2} ~/temp2 & rsync1Pid=$! #d1+d2=350k, dauert ca 35s mit bwlimit=10k
rsync --bwlimit=1k -a ~/temp1/d3 ~/temp2 & rsync2Pid=$! #d3=20k, dauert ca 20s mit bwlimit=1k
# Beispiele mit while, kommentiert mit oder ohne Erfolg:
#while ps -p $rsync1Pid,$rsync2Pid | grep rsync; do #geht, zumindest bis zu einer gewissen Dateigröße <=100kb? Darüber wird die Schleife vorzeitig verlassen
#while ps -p $rsync1Pid,$rsync2Pid | grep -q rsync; do #geht, zumindest mit diesem Skript perfekt
#while ps -C rsync; do #geht, zumindest bis zu einer gewissen Dateigröße <=100kb? Sonst Endlosschleife
#while ps -C rsync &>/dev/null; do #geht, perfekt
while pgrep -x rsync; do #geht, perfekt
echo -n "rsync läuft noch $rsync1Pid,$rsync2Pid " >>/tmp/rsync
date +'%M:%S' >>/tmp/rsync # Start- Stoppzeit, Minute:Sekunde
sleep 1
done
echo "fertig" >>/tmp/rsync
Es sieht so aus, das eine Umlenkung, zB bei "ps -C rsync", nach /dev/null und auch bei
ps -p $rsync1Pid,$rsync2Pid | grep -q rsync, hier natürlich das "-q" eine wesentliche Rolle spielt!