Инкрементный бэкап через rsync и ssh
backup.sh
#!/bin/bash
set -e
USER="root"
HOST="my-site.ru"
PORT="41111"
backup_do() {
local date_inc=$(date +%Y-%m-%d)
local backup_path_data="backups/${2}/data"
local backup_path_inc="backups/${2}/inc/${date_inc}"
local include=""
# -n означает "Not empty" (Не пустая)
if [ -n "$3" ]; then
include="--include-from=includes/${3}.txt"
fi
printf "\n\n-----------------Синхронизация с ${1}-----------------\n\n"
mkdir -p "$backup_path_data"
mkdir -p "$backup_path_inc"
rsync -avz --delete -e "ssh -p $PORT -o Compression=yes" --compress-choice=zstd $include \
--backup --backup-dir="../inc/${date_inc}" "$USER@$HOST:${1}/" "$backup_path_data"
rmdir $backup_path_inc 2> /dev/null
}
# Каталог откуда
# Название каталога куда
# Тип листа
backup_do "/srv/www/myforum" "myforum" "phpbb"
backup_do "/srv/backup/mysql" "mysql"
printf "\n\n-----------------Бэкапы-----------------\n\n"
du -sh backups/* | sed 's#\(.*\)\t.*/#\1\t#'
Создаем листы того что нужно бэкапить для rsync includes/phpbb.txt
Дублирование каталогов обязательно + /styles/, все до нужной глубины
+ /styles/
+ /styles/mytheme/***
+ /ext/***
+ /config.php
+ /files/***
+ /images/***
- *
