Резервное копирование KBackups
Создаем нужный контейнер в selectel
, далее создаем ссылку для загрузки, в настройках, выставляем пароль, добавляем время загрузки к файлу, отключаем веб интерфейс. Время жизни тут задавать не надо, иначе ссылка на загрузку тоже будет удаляться...
Создаем файл /etc/cron.weekly/backup
#!/bin/bash
declare -A BACKUP
declare -A BACKUP_EXCLUDE
# Список каталогов для резервирования через пробел
BACKUP[base]="/etc /srv"
# Если нужно исключить какие то каталоги заносим их в этот массив
BACKUP_EXCLUDE[base]="/etc/shadow etc/shadow-"
# URL на котором висит сервис
BACKUP_SERVER_URL=host:port/upload
# Пароль
BACKUP_SERVER_PASS=pass
# Пароль на архив
ARCHIVE_PASS=archive-pass
# Название файла
BACKUP_NAME=`hostname`
# Указываем путь к скрипту телеграм, если не указан результаты будут выведены на экран.
TELEGRAM_PATH=/srv/scripts/send_notify.sh
cd /var/backups/
send_message () {
if [ -z "${TELEGRAM_PATH}" ]; then
echo $1
else
`echo $1 | ${TELEGRAM_PATH}`
fi
}
function get_excludes () {
RES=""
if [[ -v "BACKUP_EXCLUDE[$1]" ]] ; then
for i in ${BACKUP_EXCLUDE[$1]}; do
RES="${RES} --exclude $(remove_slash $i)"
done
fi
echo ${RES}
}
function remove_slashes_from_str () {
RES=""
for i in $1; do
RES="${RES} $(remove_slash $i)"
done
echo ${RES}
}
function remove_slash () {
echo $(echo "$1" | sed 's:^/::g' | sed 's:/$::g')
}
for key in ${!BACKUP[@]}
do
NAME=${BACKUP_NAME}-${key}-`/bin/date +%Y-%m-%d`.tgz.enc
FILE=/var/backups/$NAME
tar -C / $(get_excludes $key) -c $(remove_slashes_from_str "${BACKUP[$key]}") | pigz | openssl enc -e -aes-256-cbc -pbkdf2 -k ${ARCHIVE_PASS} -out ${FILE}
exit_status=`curl -o /dev/null -s -w "%{http_code}\n" --write-out "%{http_code}\n" -i -XPUT ${BACKUP_SERVER_URL} -H "X-Filename: ${NAME}" -H "X-Auth-Token: ${BACKUP_SERVER_PASS}" -T $FILE`
if [ $exit_status -ne 200 ]; then
send_message "Error backup on ${key}"
# else
# send_message "Good backup on ${key} `du -sh $FILE| awk '{ print $1 }'`"
fi
rm -f $FILE
done
Выставляем права
chmod 700 /etc/cron.weekly/backup
curl умеет грузить файлы не более 5 гигабайт!
Для распаковки используем команду
openssl enc -d -aes-256-cbc -pbkdf2 -in archive.tgz.enc |pigz -d |tar -x
[ Править ]