#!/bin/bash # backup each night # param $1 path to town name # param $2 tribe name # param $3 mainfolder that contain folderlist store this in tribe/backup/mainfolder.ter.gz # param $4 prefix special keyword dayname is convert to $(date +%A) # param $5 folderlist split by a space in doublequote "folder1 folder2" if "*" or empty then backup the full mainfolder # # Exemple: # For setup #. /media/phil/usbfarm/apxtowns/dev-ants/adminapi/backup.sh /media/phil/usbfarm/apxtowns/dev-ants adminapi objects setup. "nations options pagans towns tplstrings wwws" #. /media/phil/usbfarm/apxtowns/dev-ants/adminapi/backup.sh /media/phil/usbfarm/apxtowns/dev-ants adminapi apxtri setup. "middlewares models routes apidoc_adminapi.json apxchat.js apxtri.js package.json" # For backup #. /media/phil/usbfarm/apxtowns/dev-ants/adminapi/backup.sh /media/phil/usbfarm/apxtowns/dev-ants adminapi objects dayname "persons" # # # add in crontab each day at 2h00 with echo "0 2 * * ${pathtown}/${town}/adminapi/backup.sh ${pathtown}/${town} ${tribe} objects setup. \"list of object to backup\"" | crontab - # add in crontab each day at 2h10 with echo "10 2 * * ${pathtown}/${town}/adminapi/backup.sh ${pathtown}/${town} ${tribe} objects $(date +A%) \"list of object to backup\"" | crontab - # add it for setup at least pathtown="$1" tribe="$2" mainfolder="$3" prefix="$4" if [[ "$prefix" == "dayname" ]]; then prefix=$(date +%A) fi folderlist=$5 if [[ "$folderlist" == "*" || -z "$folderlist" ]]; then #carefull lstfile must start by a space lstfile=" ${tribe}/${mainfolder}" else lstfile="" for folder in ${folderlist}; do lstfile="${lstfile} ${tribe}/${mainfolder}/${folder}" done fi cd "$pathtown" tar -czf "${tribe}/backups/${prefix}.${mainfolder}.tar.gz"$lstfile if [ $? -eq 0 ]; then echo "Archive created successfully ${tribe}/backups/${prefix}.${mainfolder}.tar.gz" else echo "Error creating archive ${tribe}/backups/${prefix}.${mainfolder}.tar.gz" fi