Added script for remote backups
This commit is contained in:
parent
9aeed416c7
commit
fdad332c9e
|
@ -0,0 +1,79 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
files=("/etc/nginx" "/etc/wireguard" "/etc/matrix-synapse" "/opt")
|
||||||
|
names=()
|
||||||
|
DBs=("synapse")
|
||||||
|
now=$(date +"%s")
|
||||||
|
week_day=$(date +"%A")
|
||||||
|
dir="/mnt/backups"
|
||||||
|
backup_dir="${dir}/${now}"
|
||||||
|
remoteUser="foxbackup"
|
||||||
|
localUser="foxbackup"
|
||||||
|
localPostgreUser="postgres"
|
||||||
|
host="42.42.42.3"
|
||||||
|
port=2244
|
||||||
|
|
||||||
|
if [ $UID != "0" ]; then
|
||||||
|
echo "You must run it as sudo."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
remoteExecuce() {
|
||||||
|
sudo -iu $localUser ssh -p $port $remoteUser@$host "$*"
|
||||||
|
}
|
||||||
|
|
||||||
|
log() {
|
||||||
|
echo "[$(date)] $*" >> ./autobackup_log.txt
|
||||||
|
echo "[$(date)] $*"
|
||||||
|
}
|
||||||
|
|
||||||
|
backupDb() {
|
||||||
|
sudo -iu $localPostgreUser pg_dump -Fc "$1" | sudo -iu $localUser ssh -p $port $remoteUser@$host "pv > \"${backup_dir}/${1}.dump\""
|
||||||
|
}
|
||||||
|
|
||||||
|
backupDir() {
|
||||||
|
tar cpf - "${2}" | sudo -iu $localUser ssh -p $port $remoteUser@$host "pv > \"${backup_dir}/${1}.tar\""
|
||||||
|
}
|
||||||
|
|
||||||
|
startBackup() {
|
||||||
|
log "#===#Starting backup#===#"
|
||||||
|
|
||||||
|
#if [[ $week_day == "Sunday" ]]; then
|
||||||
|
# backup_dir="${dir}/${now}_full"
|
||||||
|
# files+=("/var/www")
|
||||||
|
# DBs+=("peertube_prod")
|
||||||
|
#fi
|
||||||
|
|
||||||
|
remoteExecuce mkdir -p "${backup_dir}"
|
||||||
|
|
||||||
|
for name in ${files[@]}; do
|
||||||
|
IFS="/"
|
||||||
|
temp="${name}"
|
||||||
|
read -rasplitIFS<<< "${temp}"
|
||||||
|
len=${#splitIFS[@]}
|
||||||
|
names+=(${splitIFS[$len-1]})
|
||||||
|
IFS=''
|
||||||
|
done
|
||||||
|
|
||||||
|
length=${#files[@]}
|
||||||
|
i=0
|
||||||
|
while [ $i -lt $length ]; do
|
||||||
|
log "Backing up dir ${files[$i]}"
|
||||||
|
echo $i
|
||||||
|
backupDir ${names[$i]} ${files[$i]}
|
||||||
|
i=$(( $i + 1 ))
|
||||||
|
done
|
||||||
|
|
||||||
|
for db in ${DBs[@]}; do
|
||||||
|
log "Backing up DB ${db}"
|
||||||
|
backupDb ${db}
|
||||||
|
done
|
||||||
|
|
||||||
|
log "All is backed up, cleaning up old backups and finishing"
|
||||||
|
remoteExecuce "${dir}/autobackup.sh"
|
||||||
|
log "All is done."
|
||||||
|
}
|
||||||
|
startBackup
|
||||||
|
|
||||||
|
#====how to restore====#
|
||||||
|
#pg_restore -d postgres --clean --create "file backup"
|
Loading…
Reference in New Issue