Записи
Ничего не найдено

Инкрементный бэкап через 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/***
- *