#!/bin/bash # TODO: Rewrite me, maybe? <3 source /var/roothome/.config/bash/module/notify.sh source /var/roothome/.config/bash/module/checksum.sh source /var/roothome/.config/bash/module/recursive.sh dow=$(/usr/bin/date +%u) # current day of week number. date=$(/usr/bin/date +%Y%m%d%H%M) # date stamp. path_src="/var/mnt/storage/hot" # backup src location. path_media="/var/mnt/storage/cold_1/media /var/mnt/storage/cold_2/media" # media paths. path_mount="/var/mnt/storage/cold_1" # backup mount location. path_backup="${path_mount}/backup" # backup dir location. path_docker="${path_backup}/home" # docker backup location. # Check if backup drive is mounted. if [ ! -f "${path_mount}"/.mount ]; then echo "Backup : ${path_mount} not mounted!" notify "Backup : ${path_mount} not mounted!" exit 1 fi # Check if hot storage is mounted. if [ ! -f "${path_src}"/.mount ]; then echo "Backup : ${path_src} not mounted!" notify "Backup : ${path_src} not mounted!" exit 1 fi # Tweak bash. shopt -s globstar shopt -s dotglob # Cd to src storage. builtin cd "${path_src}" # Save media list. /usr/bin/find ${path_media} -type d | gzip -1 > ${path_backup}/tmp/ColdMedia.txt.gz || notify 'Backup : Failed to save media list!' # Backup docker. rm ${path_docker}/${dow}_*.tgz /usr/bin/tar --exclude-from=docker/.tarignore -c docker | /usr/bin/gzip -1 > ${path_docker}/docker.tgz && mv ${path_docker}/docker.tgz ${path_docker}/${dow}_${date}-$(/usr/bin/sha1sum ${path_docker}/docker.tgz | cut -d\ -f1).tgz || notify 'Backup : Failed to save docker!' # Update checksums. cd ${path_src}/media/book/ && recursive checksum_create || notify 'Backup : Checksum book failed!' cd ${path_src}/media/music/ && recursive checksum_create || notify 'Backup : Checksum music failed!' cd ${path_src}/media/paper/ && recursive checksum_create || notify 'Backup : Checksum paper failed!' # Copy tmp media. /usr/bin/rsync -a --delete ${path_src}/media/book/ ${path_backup}/tmp/book/ || notify 'Backup : Failed to save books!' /usr/bin/rsync -a --delete ${path_src}/media/music/ ${path_backup}/tmp/music/ || notify 'Backup : Failed to save music!' /usr/bin/rsync -a --delete ${path_src}/media/paper/ ${path_backup}/tmp/paper/ || notify 'Backup : Failed to save paper!' /usr/bin/rsync -a --delete ${path_src}/media/porn/ ${path_backup}/tmp/porn/ || notify 'Backup : Failed to save porn!' /usr/bin/rsync -a --delete /var/mnt/storage/cold_2/media/youtube/best/ ${path_backup}/tmp/youtube/ || notify 'Backup : Failed to save youtube!' # Upload external. #/usr/bin/rsync -ahP -e 'ssh -p 143 -i /var/roothome/document/key/ssh/pi.key' /var/mnt/backup/ root@192.168.1.6:/var/mnt/backup/ || notify 'backup : failed upload' # Notify completion & size. bupsize=$(/usr/bin/du -h ${path_docker}/${dow}_*.tgz | awk '{print $1}') notify_silent "Backup : Complete ${bupsize}." echo "Backup : Complete ${bupsize}."