backup-to-b2.sh.j2 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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 backups_ignore not in volume|regex_replace(':.*') %}
  10. echo "Starting backup of '{{ container.service_name }}:{{ volume | regex_replace(':.*') }}'." | ts >> "$LOG_FILE"
  11. /usr/bin/rclone copy {{ volume | regex_replace(':.*') }}/ b2-container-data:current/{{ ansible_hostname }}/{{ container.service_name }}/{{ volume | regex_replace(':.*') | basename }} \
  12. --backup-dir=b2-container-data:old/{{ ansible_hostname }}/{{ container.service_name }}/{{ volume | regex_replace(':.*') | basename }} \
  13. --suffix=-$(date +%Y-%m-%d) \
  14. --fast-list \
  15. --suffix-keep-extension \
  16. --exclude "*log" \
  17. --log-file="$LOG_FILE" -v
  18. echo "Finished backup of '{{ container.service_name }}:{{ volume | regex_replace(':.*') }}'." | ts >> "$LOG_FILE"
  19. {% endif %}
  20. {% endfor %}
  21. {% endif %}
  22. {% endfor %}
  23. {% endif %}
  24. {% endif %}
  25. {% if ansible_hostname == 'tvheadend' %}
  26. ## Photos
  27. PHOTOS_LOG="/tmp/b2-photos.log"
  28. > $PHOTOS_LOG
  29. echo "Starting backup of photos..." | ts >> "$LOG_FILE"
  30. #/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"
  31. /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"
  32. if [[ $? > 0 ]]; then
  33. mail -s "[$(hostname)] rclone - Photos Backup Error" "$EMAIL_ADDRESS" < $PHOTOS_LOG
  34. fi
  35. mv "$PHOTOS_LOG" "$LOG_DIR"
  36. echo "Finished backing up photos" | ts >> "$LOG_FILE"
  37. # Data
  38. DATA_LOG="/tmp/b2-data.log"
  39. > $DATA_LOG
  40. echo "Starting backup of data..." | ts >> "$LOG_FILE"
  41. /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"
  42. if [[ $? > 0 ]]; then
  43. mail -s "[$(hostname)] rclone - Data Backup Error" "$EMAIL_ADDRESS" < $PHOTOS_LOG
  44. fi
  45. mv "$DATA_LOG" "$LOG_DIR"
  46. echo "Finished backing up data" | ts >> "$LOG_FILE"
  47. # Music
  48. MUSIC_LOG="/tmp/b2-music.log"
  49. > $MUSIC_LOG
  50. echo "Starting backup of music..." | ts >> "$LOG_FILE"
  51. /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"
  52. if [[ $? > 0 ]]; then
  53. mail -s "[$(hostname)] rclone - Music Backup Error" "$EMAIL_ADDRESS" < $MUSIC_LOG
  54. fi
  55. mv "$MUSIC_LOG" "$LOG_DIR"
  56. echo "Finished backing up music" | ts >> "$LOG_FILE"
  57. # Recipes
  58. RECIPES_LOG="/tmp/b2-recipes.log"
  59. > $RECIPES_LOG
  60. echo "Starting backup of recipes..." | ts >> "$LOG_FILE"
  61. /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"
  62. if [[ $? > 0 ]]; then
  63. mail -s "[$(hostname)] rclone - Recipes Backup Error" "$EMAIL_ADDRESS" < $RECIPES_LOG
  64. fi
  65. mv "$RECIPES_LOG" "$LOG_DIR"
  66. echo "Finished backing up recipes" | ts >> "$LOG_FILE"
  67. {% endif %}