Files
shtemaran/bin/backup.hdd.sh

126 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
#set -x
DATE=/bin/date
RSYNC=/usr/bin/rsync
TIMESTAMP=`$DATE +%Y%m%d-%H:%M%z`
LOGFILE=/mnt/hdd/backup/log/backup.$TIMESTAMP.log
LOG="/usr/bin/tee -a $LOGFILE"
function term() {
echo "Terminating." | $LOG
exit 1
}
trap term INT
function backup() {
ORIG_DIR=$1
MIRROR_DIR=$2
shift 2
echo ""
echo "Sync $ORIG_DIR to $MIRROR_DIR"
echo "========================================================"
# Use --progress if interactive.
$RSYNC -aAXv --delete --force "$@" $ORIG_DIR $MIRROR_DIR 2>&1 | $LOG
if [ $? -ne 0 ]; then
echo "There were errors while backing up $ORIG_DIR"
fi
echo ""
}
function backuphdd() {
HDD_ORIG=/mnt/hdd
HDD_MIRROR=/mnt/hdd2
ORIG_DIR=$HDD_ORIG/$1
MIRROR_DIR=$HDD_MIRROR/$(dirname $1)
backup $ORIG_DIR $MIRROR_DIR
}
function backupwd() {
ORIG_DIR=$1
MIRROR_DIR=192.168.0.6:/DataVolume/$2
backup $ORIG_DIR $MIRROR_DIR
}
function backuplusntag() {
ORIG_DIR="vahagn@192.168.0.3:$1"
MIRROR_DIR=$2
backup $ORIG_DIR $MIRROR_DIR -e "ssh -i /home/vahagn/.ssh/id_rsa"
}
function backupyerevak() {
ORIG_DIR="vahagn@yerevak.vostan.org:$1"
MIRROR_DIR=$2
backup $ORIG_DIR $MIRROR_DIR -e "ssh -i /home/vahagn/.ssh/id_rsa -p 24"
}
function backup_nextcloud() {
APP=$(docker ps -qf "name=nextcloud_app")
DB=$(docker ps -qf "name=nextcloud_db")
BACKUPDIR="/mnt/hdd/backup/nextcloud"
docker exec -u www-data $APP php occ maintenance:mode --on
# Backup DB
docker exec $DB /bin/bash \
-c "export PGPASSWORD=nextcloud123 && pg_dump nextcloud -h db -U nextcloud" \
| gzip -9 > "${BACKUPDIR}/nextcloud-db-sqlbkp_`date +"%Y%m%d"`.gz"
# Backup Files
backup "/var/lib/docker/volumes/nextcloud_nextcloud" "${BACKUPDIR}/volume"
docker exec -u www-data $APP php occ maintenance:mode --off
}
function backup_gitea() {
APP=$(docker ps -qf "name=gitea")
BACKUPDIR="/mnt/hdd/backup/gitea"
# Backup Files
# backup "/var/lib/docker/volumes/gitea_gitea" "${BACKUPDIR}/volume"
docker exec -u git $APP /app/gitea/gitea dump -f /tmp/gitea-dump.zip
docker cp $APP:/tmp/gitea-dump.zip "${BACKUPDIR}"
}
#
# Log Header
#
echo Starting $LOGFILE | $LOG
echo start `$DATE` | $LOG
#
# Sync folders
#
backup_gitea
backup_nextcloud
backup "/src/gerbera/music" "/mnt/hdd/public"
backup "/src/calibre" "/mnt/hdd/backup"
#
# Backup Lusntag
#
backuplusntag "/home/vahagn/msdos" "/mnt/hdd/backup"
backuplusntag "/home/vahagn/devel" "/mnt/hdd/backup/lusntag"
backuplusntag "/var/www" "/mnt/hdd/backup/lusntag"
backuplusntag "/etc/nginx" "/mnt/hdd/backup/lusntag/etc"
#
# Backup Yerevak
#
backupyerevak "/home/vahagn/devel" "/mnt/hdd/backup/yerevak"
#
# Backup hdd1 to hdd2
#
backuphdd "backup"
backuphdd "private"
for i in $(ls /mnt/hdd/public); do
if [ $i != "movies" ]; then
backuphdd "public/$i"
fi
done
#
# Log Footer
#
echo end `$DATE` | $LOG