Задание Cron для создания и отправки резервных копий по FTP

Мой VPS работает на Centos 7 с nginx и MySQL 8.0 Я создал 2 задания cron для резервного копирования моих файлов и базы данных каждый день в определенное время. все работает нормально, но я пытаюсь отправить эти файлы резервных копий на мой резервный хост. Я создал bash-файл для автоматической отправки файлов через резервный хост, но проблема в том, что он отправляет ВСЕ файлы Tar в удаленное место назначения, и то, что я хочу, это отправка только вновь созданного файла для загрузки каждый раз и выполнение одной и той же процедуры для последних 7 файлов (недельный цикл). Я столкнулся с проблемами, и мне сказали, что лучше заставить работу cron выполнять всю работу. Можно ли сказать команде cron, когда вы закончите создание Tar-файла (как для sql, так и для файлов), отправить их на резервный хост и сохранить только 7 резервных копий, заменив старый? вот мой bash скрипт:

#!/bin/bash
ftp=****
username=****
passwd=****
remote=/DESTINATION on Backup Host/
folder=$1
cd /local folder to pick files/$folder
pwd
ftp -n -i $ftp <<EOF
    user $username $passwd
    mkdir $remote/$folder
    cd $remote/$folder
    mput *
    close
EOF

и вот моя работа cron:

00 01 * * * mysqldump -u "location_to_username_and_password" "db name" | gzip -c > /location/db_name.`date +\%a\-\%Y\.\%m\.\%d`.sql.gz
00 03 * * * tar -cvpzf /location/db_name.`date +\%a\-\%Y\.\%m\.\%d`.tar.gz -C /route_to_folder/ folder_name
0
задан 21 April 2021 в 08:07
1 ответ

Вы можете использовать версионный архиватор для хранения всех дампов без необходимости ротации резервных копий, например, через zpaqfranz https://github.com/fcorbelli/zpaqfranz или оригинальный zpaq.

Предположим, mysqldump -uroot -ppippo mydb >/tmp/databasedump.sql просто a

zpaqfranz a /whereismybackup.zpaq /tmp/databasedump.sql

Затем вы можете загрузить резервную копию с помощью rsync, на удаленный сервер, с чем-то вроде (конечно, вам нужен ключ пользователя для загрузки по ssh )

rsync -I --append --omit-dir-times --no-owner --no-perms --partial --progress -e "ssh -p 22 -i /thekeyoftheuser" -rlt --delete "/whereismybackup.zpaq" "userofthekey@server-ip:/home/userofthekey/thebackup"

И да, вам нужен ssh (порт 22 или любой другой) и rsync на удаленном сервере. В этом случае, используя zpaq-архив, вам не нужно каждый раз отправлять весь файл, а только добавленные байты (гораздо быстрее)

0
ответ дан 7 June 2021 в 13:59

Теги

Похожие вопросы