backup-to-b2.sh.j2 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #!/bin/bash
  2. # {{ ansible_managed }}
  3. LOG_FILE="/var/log/rclone/rclone-$(date +%Y-%m-%d).log"
  4. {% if backups is defined and 'containers' in backups %}
  5. {% if containers is defined %}
  6. {% for container in containers %}
  7. {% if container.volumes is defined %}
  8. {% for volume in container.volumes %}
  9. {% if volume|regex_replace(':.*') not in backups_ignore %}
  10. echo "Stopping '{{ container.name }}' service..." | ts >> "$LOG_FILE"
  11. systemctl stop {{ container.name }}
  12. echo "Service '{{ container.name }}' stopped." | ts >> "$LOG_FILE"
  13. echo "Starting backup of '{{ container.name }}:{{ volume | regex_replace(':.*') }}'." | ts >> "$LOG_FILE"
  14. /usr/bin/rclone copy {{ volume | regex_replace(':.*') }}/ b2-container-data:current/{{ ansible_hostname }}/{{ container.name }}/{{ volume | regex_replace(':.*') | basename }} \
  15. --backup-dir=b2-container-data:old/{{ ansible_hostname }}/{{ container.name }}/{{ volume | regex_replace(':.*') | basename }} \
  16. --suffix=-$(date +%Y-%m-%d) \
  17. --fast-list \
  18. --suffix-keep-extension \
  19. --exclude "*log" \
  20. --log-file="$LOG_FILE" -v
  21. if [[ $? > 0 ]]; then
  22. curl \
  23. -H "Title: rclone backup error" \
  24. -H "Priority: urgent" \
  25. -H "Tags: warning" \
  26. -d "Backup of {{ container.name }}:{{ volume | regex_replace(':.*') }} on $(hostname) had an error. Please check logs at $LOG_FILE" \
  27. https://ntfy.warchildstory.com/{{ ntfy_server_notifications }}
  28. fi
  29. echo "Finished backup of '{{ container.name }}:{{ volume | regex_replace(':.*') }}'." | ts >> "$LOG_FILE"
  30. echo "Starting '{{ container.name }}' service..." | ts >> "$LOG_FILE"
  31. systemctl start {{ container.name }}
  32. echo "Service '{{ container.name }}' started." | ts >> "$LOG_FILE"
  33. {% endif %}
  34. {% endfor %}
  35. {% endif %}
  36. {% endfor %}
  37. {% endif %}
  38. {% endif %}
  39. {% if ansible_hostname == 'tvheadend' %}
  40. ## Photos
  41. PHOTOS_LOG="/tmp/b2-photos.log"
  42. > $PHOTOS_LOG
  43. echo "Starting backup of photos..." | ts >> "$LOG_FILE"
  44. #/usr/bin/rclone copy /mnt/nas/private/Photos b2-photos:current --backup-dir=b2-photos:old --suffix=-$(date +%Y-%m-%d) --fast-list --suffix-keep-extension --exclude "*DS_Store" --log-file=$PHOTOS_LOG | ts | tee -a "$LOG_FILE"
  45. /usr/bin/rclone copy /mnt/nas/private/Photos b2-photos:current --fast-list --immutable --exclude "*DS_Store" --log-file=$PHOTOS_LOG -v | ts | tee -a "$LOG_FILE"
  46. if [[ $? > 0 ]]; then
  47. curl \
  48. -H "Title: rclone backup error" \
  49. -H "Priority: urgent" \
  50. -H "Tags: warning" \
  51. -d "Backup of Photos on $(hostname) had an error. Please check logs at $LOG_DIR/$(basename -- $PHOTOS_LOG)" \
  52. https://ntfy.warchildstory.com/{{ ntfy_server_notifications }}
  53. fi
  54. mv "$PHOTOS_LOG" "$LOG_DIR"
  55. echo "Finished backing up photos" | ts >> "$LOG_FILE"
  56. # Data
  57. DATA_LOG="/tmp/b2-data.log"
  58. > $DATA_LOG
  59. echo "Starting backup of data..." | ts >> "$LOG_FILE"
  60. /usr/bin/rclone copy /mnt/nas/private/Data b2-data:current --backup-dir=b2-data:old --suffix=-$(date +%Y-%m-%d) --fast-list --suffix-keep-extension --exclude "*DS_Store" --log-file=$DATA_LOG -v | ts | tee -a "$LOG_FILE"
  61. if [[ $? > 0 ]]; then
  62. curl \
  63. -H "Title: rclone backup error" \
  64. -H "Priority: urgent" \
  65. -H "Tags: warning" \
  66. -d "Backup of Data on $(hostname) had an error. Please check logs at $LOG_DIR/$(basename -- $DATA_LOG)" \
  67. https://ntfy.warchildstory.com/{{ ntfy_server_notifications }}
  68. fi
  69. mv "$DATA_LOG" "$LOG_DIR"
  70. echo "Finished backing up data" | ts >> "$LOG_FILE"
  71. # Music
  72. MUSIC_LOG="/tmp/b2-music.log"
  73. > $MUSIC_LOG
  74. echo "Starting backup of music..." | ts >> "$LOG_FILE"
  75. /usr/bin/rclone copy /mnt/nas/public b2-music:current --backup-dir=b2-music:old --suffix=-$(date +%Y-%m-%d) --fast-list --suffix-keep-extension --include=Music/** --include="Music Videos"/** --log-file=$MUSIC_LOG -v | ts | tee -a "$LOG_FILE"
  76. if [[ $? > 0 ]]; then
  77. curl \
  78. -H "Title: rclone backup error" \
  79. -H "Priority: urgent" \
  80. -H "Tags: warning" \
  81. -d "Backup of Music on $(hostname) had an error. Please check logs at $LOG_DIR/$(basename -- $MUSIC_LOG)" \
  82. https://ntfy.warchildstory.com/{{ ntfy_server_notifications }}
  83. fi
  84. mv "$MUSIC_LOG" "$LOG_DIR"
  85. echo "Finished backing up music" | ts >> "$LOG_FILE"
  86. # Recipes
  87. RECIPES_LOG="/tmp/b2-recipes.log"
  88. > $RECIPES_LOG
  89. echo "Starting backup of recipes..." | ts >> "$LOG_FILE"
  90. /usr/bin/rclone copy /mnt/nas/public b2-data:current --backup-dir=b2-data:old --suffix=-$(date +%Y-%m-%d) --fast-list --suffix-keep-extension --include=Recipes/** --log-file=$RECIPES_LOG -v | ts | tee -a "$LOG_FILE"
  91. if [[ $? > 0 ]]; then
  92. curl \
  93. -H "Title: rclone backup error" \
  94. -H "Priority: urgent" \
  95. -H "Tags: warning" \
  96. -d "Backup of Recipes on $(hostname) had an error. Please check logs at $LOG_DIR/$(basename -- $RECIPES_LOG)" \
  97. https://ntfy.warchildstory.com/{{ ntfy_server_notifications }}
  98. fi
  99. mv "$RECIPES_LOG" "$LOG_DIR"
  100. echo "Finished backing up recipes" | ts >> "$LOG_FILE"
  101. {% endif %}