Hallo,
ich versuche gerade ein kleines Backupscript zu basteln und habe ein Problem. Hier erstmal das script:
So, und nun zum eigentlichen Problem:
die Zeile
sorgt dafür, dass wenn ich den Abbrechen Button drücke, die bash beendet wird und das führt wiederrum dazu, dass die Zeile
ausgeführt wird. Leider passiert das nicht, sonder die trap Anweisung wird erst ausgeführt nachdem ich den rsync Prozess manuell beende. Mein Ziel ist es aber eigentlich, dass rsync selber beendet wird sobald ich den Abrechen Button drücke.
Jemand ne Idee?
Gruß,
weelkin
ich versuche gerade ein kleines Backupscript zu basteln und habe ein Problem. Hier erstmal das script:
Code:
#!/bin/bash
MOUNT="/mnt/BACKUP_BTRFS"
MOUNT_OPS="compress=lzo,subvolid=0"
DEV="/dev/sdb1"
EXCLUDE=/home/robert/ArchLinux/backup/rsync_exclude
RSYNC_OPS="-auvh --delete --progress --exclude-from=$EXCLUDE"
RSYNC_DEST="$MOUNT/BACKUP"
DATE="+%d%m%Y-%H%M"
trap "killall rsync" EXIT #Wenn die bash beendet wird, dann kille alle rsync Prozesse
# mounted backup platte falls noch nicht geschehen
function mount_backup {
if [ -z "$(mount | grep $DEV)" ]
then
mount -o $MOUNT_OPS $DEV $MOUNT
fi
}
# erstellt ein btrfs snapshot von dem backup subvolume
function snapshot {
btrfs subvolume snapshot $MOUNT/BACKUP $MOUNT/BACKUP-$(date $DATE)
}
zenity --question --text="Start backup now?" 2>/dev/null
if [ $? -eq 0 ]
then
mount_backup
if [ $? -eq 0 ] #Falls mounten erfolgreich dann wird rsync restartet
then
rsync $RSYNC_OPS / $RSYNC_DEST | zenity --progress --pulsate --auto-kill # Das zeigt mir einen pulsierenden Statusbalken an ink. einem "Abbrechen" Button
fi
if [ ${PIPESTATUS[0]} -eq 0 ] #Wenn rsync mit Fehlercode "0" beendet ist, dann erstelle einen Snapshot vom Backup
then
snapshot
else
zenity --error --text="Fehler" 2>/dev/null
fi
umount $DEV # Backup platte wieder unmounten
fi
So, und nun zum eigentlichen Problem:
die Zeile
Code:
rsync $RSYNC_OPS / $RSYNC_DEST | zenity --progress --pulsate --auto-kill
Code:
trap "killall rsync" EXIT
Jemand ne Idee?
Gruß,
weelkin