Ссылки:
1 2 |
как ставить сам borg можно посмотреть тут: https://b14esh.com/nix/backup/borgbackup-backup-borg-debian-10.html |
backup files
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
0. Создаем каталоги: mkdir -p /root/backup/{etc,www,sql} 1. Создаем скрипт для бэкапа и вносим изменения для переменных cat > /root/backup/backup.sh << "EOF" ---------------------------- #!/bin/bash #VAR TIMESTAMP=`date +%m-%d-%y-%H%M` HOST=localhost DBNAME="dbname" USER="dbuser" PASSWORD="dbPassw0rd" DUMP_PATH=/root/backup/sql BACK_PATH=/root/backup/www BACK_PATH_ETC=/root/backup/etc # BACKUP cd /root/backup # Backup mysql mysqldump --opt -c -e -Q -h${HOST} -u${USER} -p${PASSWORD} ${DBNAME} > ${DBNAME}.sql tar czpf ${DUMP_PATH}/${DBNAME}.${TIMESTAMP}.tar.gz ${DBNAME}.sql rm -f ${DBNAME}.sql # Backing up files #tar cvzpf $BACK_PATH/www.$TIMESTAMP.tar.gz --same-owner --exclude=/var/www/site/gruzims/* /var/www tar cvzpf ${BACK_PATH}/www.${TIMESTAMP}.tar.gz /var/www/html tar cvzpf ${BACK_PATH_ETC}/etc.${TIMESTAMP}.tar.gz /etc # CLEAN FOLDER BACKUP # выполняем только если файлов в каталогах для бекапа больше двух delfiles(){ for i in $1 $2 $3 $4 $5 $6; do calc=$(ls ${i} | wc -l) if ((${calc} > 2)); then true ; else false ; fi && find ${i} -name "*.tar.gz" -mtime +15 -delete done } delfiles ${DUMP_PATH} ${BACK_PATH} ${BACK_PATH_ETC} EOF 2. Создаем сервис в systemd cat > /etc/systemd/system/backup-wp.service << "EOF" [Unit] Description=backup [Service] Type=oneshot ExecStart=/root/backup/backup.sh Restart=on-failure [Install] WantedBy=multi-user.target EOF 3. Создаем таймер в systemd для будем бэкапить в 2 часа ночи cat > /etc/systemd/system/backup.timer << "EOF" [Unit] Description=backup [Timer] OnCalendar=02:00:00 [Install] WantedBy=timers.target EOF 4. Активируем сервисы для бекапа systemctl daemon-reload systemctl enable backup-wp.service systemctl enable backup-wp.timer systemctl status backup-wp.service systemctl status backup-wp.timer systemctl list-timers backup-wp.timer 5. Может пригодится: #HINT # SYSTEMCTL # systemctl status backup-wp.service # systemctl status backup-wp.timer # Clean DB erase # mysqldump -uuser -ppassword --add-drop-table --no-data databasename | grep ^DROP | mysql -uuser -ppassword databasename # Clean not work # drop databases mydatabasedump.sql; # create databases mydatabasedump.sql; # RESTORE # mysql -u root -p -f mydatabase < /home/myname/mydatabasedump.sql # RSYNC to remote server # sync -avz /root/backup-wp user@YOU-server-IP-DNS:/home/user/backup-wp |
ssh \ ssh-keygen \ ssh-copy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Создать пользователя "USRER_NAME" с домашним каталогом "/backup/USRER_CATALOG_BACKUP": adduser --home /backup/USRER_CATALOG_BACKUP --disabled-password borg USRER_NAME Подключится пользователем sudo -i -u USRER_NAME ssh - поддержка авторизация без пароля с помощью RSA ключей Выполнять на клиенте с которого будем подключатся к серверу. ssh-keygen - создаем пару ключей на сервере с которого будем подключатся. ssh-copy-id sammy@IP_адрес_вашего_сервера - копирование открытого ключа На сервере куда будем класть бэкапы, пользователю в домашнем каталоге добавляем публичные ключи: .ssh/authorized_keys Если нет каталога .ssh можно его создать mkdir .ssh touch .ssh/authorized_keys chmod 700 .ssh chmod 600 .ssh/authorized_keys |
borgbackup
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
1. Создаем сервис в systemd cat > /etc/systemd/system/borg-backup.service << "EOF" [Unit] Description=borg-backup [Service] Type=oneshot ExecStart=/root/borg-backup.sh Restart=on-failure [Install] WantedBy=multi-user.target EOF 2. Создаем таймер в systemd для будем бэкапить в 3 часа ночи cat > /etc/systemd/system/borg-backup.timer << "EOF" [Unit] Description=borg-backup.timer [Timer] OnCalendar=03:00:00 [Install] WantedBy=timers.target EOF 3. скрипт бэкапа cat > /root/borg-backup.sh << "EOF" #!/bin/bash /usr/bin/borg create -C lz4 borg@IP_AND_HOSTNAME:FOLDER_BACKUP::system_$(date +%Y%m%d_%H%M%S) /root /home /etc EOF chmod +x /root/borg-backup.sh 4. Активируем сервисы для бекапа systemctl daemon-reload systemctl enable borg-backup.service systemctl enable borg-backup.timer systemctl start borg-backup.timer systemctl status borg-backup.service systemctl status borg-backup.timer systemctl list-timers borg-backup.timer systemctl start borg-backup.service 5. Чистилка бэкапов cat > /root/borg-prune.sh << "EOF" #!/bin/bash list_backup="linux linux2 linux3 linux4 linux5" borg_purn_par="--force -v --list --keep-daily 10 --keep-weekly 5 --keep-monthly 8" borg_backup_dir="/backup/" #!/bin/bash for i in ${list_backup}; do borg prune ${borg_purn_par} ${borg_backup_dir}${i}/ done for i in ${list_backup}; do echo ${i} borg list ${borg_backup_dir}${i}/ done for i in ${list_backup}; do chown borg:borg -R ${borg_backup_dir}${i} echo "done chown for borg dir ${i}" done EOF chmod +x /root/borg-prune.sh 6. Таймеры для чистилки Создаем сервис в systemd cat > /etc/systemd/system/borg-prune.service << "EOF" [Unit] Description=borg-prune [Service] Type=oneshot ExecStart=/root/borg-prune.sh Restart=on-failure [Install] WantedBy=multi-user.target EOF Создаем таймер в systemd для будем бэкапить в 3 часа ночи cat > /etc/systemd/system/borg-prune.timer << "EOF" [Unit] Description=borg-prune [Timer] OnCalendar=04:00:00 [Install] WantedBy=timers.target EOF systemctl daemon-reload systemctl enable borg-prune.service systemctl enable borg-prune.timer systemctl start borg-prune.timer systemctl status borg-prune.service systemctl status borg-prune.timer systemctl list-timers borg-prune.timer systemctl start borg-prune.service |