Advertisement
pkas

rsync2usb

Mar 29th, 2023 (edited)
743
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.01 KB | None | 0 0
  1. backup_datenhd.sh:
  2.  
  3. #!/bin/bash
  4.  
  5. #Datum und Uhrzeit werden an den Dateinamen der Logdatei angehängt
  6. datum=$(date +%d-%m-%y___%H:%M:%S)
  7.  
  8. #Das Verzeichnis, das gesichert werden soll
  9. #z.b. source_path="/home/" oder
  10. source_path="/home"
  11.  
  12. #Verzeichnis für die Log-Datei
  13. log_path="/var/log/backup_datenhd"
  14.  
  15. #Falls log_path nicht existiert, anlegen
  16. #Sollte das Script als User ausgeführt werden bitte darauf achten,
  17. #daß für den User Schreibrechte exitieren
  18. if ! [ -d $log_path ] ; then
  19.      mkdir -p $log_path
  20. fi
  21.  
  22. #dest_path ist das Verzeichnis, wohin gesichert werden soll.
  23. #Es muss in der fstab dem Laufwerk zugeordnet sein
  24. #z.b.:
  25. #LABEL=DatenHD-Back    /media/DatenHD-Back    ext4    defaults,noauto,users,nofail,rw 0 0
  26. #in diesem Fall:
  27. dest_path="/media/DatenHD-Back"
  28. #ohne / am Ende
  29.  
  30. #dest_drive kann entweder LABEL oder die UUID des Laufwerks sein.
  31. dest_drive="DatenHD-Back"
  32.  
  33. #Prüfen, ob das Laufwerk angeschlossen ist:
  34. drive_connected="$(lsblk -f | grep -i $dest_drive)"
  35.  
  36. #Falls das Drive angeschlossen ist, wird es eingehängt,
  37. #wenn nicht, passiert gar nichts
  38. if [[ "$drive_connected" == *"$dest_path"* ]]; then
  39.     mount $dest_path
  40.  
  41.     #Nochmal prüfen, ob das Laufwerk ordentlich eingehängt wurde:
  42.     if grep -i $dest_path /proc/mounts; then
  43.         #wenn ja, rsync ausführen und Ausgabe in Logdatei
  44.         #$source_path und $dest_path noch anpassen, evtl. noch am Ende / einfügen falls nötig
  45.         rsync -avzb $source_path $dest_path  --log-file=$log_path/$datum
  46.         #Laufwerk danach wieder unmounten
  47.         umount $dest_path
  48.     else
  49.         #wenn nicht, Error-log anlegen
  50.         echo "Das Laufwerk $dest_drive konnte nicht nach $dest_path eingehängt werden" > $log_path/$datum.FAILED
  51.     fi
  52. fi
  53.  
  54. #Anschliessend eine udev-Regel anegen:
  55. /etc/udev/rules.d/90-backup_datenhd.rules:
  56.  
  57. #Dort folgendes eintragen:
  58. ACTION=="add", SUBSYSTEMS=="usb", KERNEL=="sd*", RUN+="/bin/bash /pfad/zu/backup_datenhd.sh"
  59.  
  60. #dann noch ausführen:
  61. udevadm control --reload-rules && udevadm trigger
  62.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement