Автоматическое резервное копирование

Создаем скрипт

backup.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh
set -e

dir="/srv/www/htdocs/nextcloud/"
file="/media/BACKUPS/CLOUD/nextcloud_$(date +%d.%m.%Y-%H.%M).tar.bz2"
key="FEAFA65DEABC54090D31CDDF7CF4FAF9806C240E"

echo -n "Создаю резервную копию $file..."
tar --one-file-system \
--use-compress-program=pbzip2 \
--exclude=".Trash" \
-c -p -f $file -C $dir . \
2>/dev/null && echo " Выполнено." || echo " ОШИБКА!"

echo -n "Подписываю резервную копию используя открытый ключ..."
gpg2 --out "$file.asc" --recipient "$key" --encrypt "$file" && echo " Выполнено." || echo " ОШИБКА!"

echo -n "Удаляю незашивровынный файл бекапа..."
rm -f "$file" && echo " Выполнено." || echo " ОШИБКА!"

echo "Резервная копия $file.asc успешно создана"

dir= что копируем

file= имя и расположение файла бекапа

key= Наш публичный ключ

--use-compress-program=pbzip2 многопоточное сжатие в bz2 архив

--exclude= Исключенные папки из резервной копии

Автоматизация

Создаем сервис и таймер

Сервис

1
2
3
4
5
6
[Unit]
Description=Backup contents of user's home directory

[Service]
Type=oneshot
ExecStart=/root/bin/backup.sh

Таймер

1
2
3
4
5
6
7
8
9
10
[Unit]
Description=Daily backup contents of user's home directory

[Timer]
OnCalendar=*-*-* 1:00:00
AccuracySec=1h
Persistent=true

[Install]
WantedBy=timers.target

Включаем таймер

systemctl enable --now blabla-backup.timer

Расшифровка архива

gpg2 --out "nextcloud_ДД.ММ.ГГГГ-чч.мм.tar.bz2" --decrypt "nextcloud_ДД.ММ.ГГГГ-чч.мм.tar.bz2.asc"