Ich mache bei mir fast das gewünschte:
Sobald ein bestimmter USB-Stick angeschlossen wird, wird automatisch ein
Backup erstellt. Nur die wirklich geänderten Dateien werden kopiert, die
unveränderten Dateien nur per Hardlink verlinkt.
Einziger kleinr Unterschied: Ich mache kein Backup vom USB-Stick auf die
Festplatte, sondern anders herum, von der Festplatte auf den USB-Stick.
Aber das ist im Grunde ja nur eine minimale Änderung.
Als Backup-Software verwende ich dabei "rsnapshot", das seinerseits
glaube ich das bereits mehrfach erwähnte rsync verwendet.
Damit das Backup automatisch läuft, sobald der USB-Stick angeschlossen
wird, verwende ich eine UDEV-Regel a la:
1 | SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", ENV{ID_FS_UUID_ENC}=="16918e26-235e-49d8-b88d-b81dcfcd5039", ACTION=="add", RUN+="/home/joachim/backup/backup.sh $env{ID_FS_UUID_ENC}"
|
Die in der UDEV-Regel enthaltene UUID der Partition des USB-Sticks, bei
deren Anschluss das Backup getriggert werden soll, kann man sich per
1 | udevadm info --query=all --name=<Backup partition, z.B. /dev/sdb1> | grep ID_FS_UUID_ENC
|
anzeigen lassen.
Ich habe mehrere Backup-USB-Sticks, und daher mehrere dieser
UDEV-Regeln. Alle rufen das gleiche Backup-Script namens
"/home/joachim/backup/backup.sh" auf, die UUID der konkreten
Backup-Partition wird dabei als Kommandozeilen-Argument übergeben, im
obigen Beispiel würde also bspw.
1 | /home/joachim/backup/backup.sh 16918e26-235e-49d8-b88d-b81dcfcd5039
|
aufgerufen werden.
Für jede derartige Backup-Partition gibt es dann eine kleine
rsnapshot-Konfigurationsdabei, für obige Beispiel-Partition z.B. unter
dem Pfad "/home/joachim/backup/16918e26-235e-49d8-b88d-b81dcfcd503.conf"
Das backup.sh-Script mounted die angegebene Partition, und startet dann
rsnapshot mit dieser Konfigurationsdatei, in der in erster Linie einfach
aufgelistet wird, welche Verzeichnisse wohin gebackupt werden sollen.