Я использую задание cron для ежечасного резервного копирования, и теперь я хочу по умолчанию сбросить эти резервные копии на другой сервер.
Мой сценарий следующий:
mysqldump -u db_user -p db_password db_name| gzip > /current/path/for/backups/backup_$(date).sql.gz
Что я могу сделать, чтобы изменить текущий путь на новый путь на другом сервере?
Вы можете создать общую папку в месте назначения и смонтировать ее на сервере mysql, а затем указать путь назначения в сценарии к этой смонтированной папке. Это должно сработать. В качестве альтернативы вы можете инициировать scp-соединение для копирования содержимого на целевой сервер.
Как я обычно это делаю: bakup, копирование на другой сервер, а затем удаление из источника
mysqldump -u db_user -p db_password db_name| gzip > /current/path/for/backups/backup_$(date).sql.gz;
#Searching, moving to other server and deleting backup files from source.
cd /current/path/for/backups/backup_$(date).sql.gz;
for f in *.gz
do
scp -pr $f hostnameofotherserver:/destination/path/mysql/backup
wait
echo "Removing $f..."
rm -f $f
done
Для справки на Настройка ключа SSH (каждый раз без пароля)
http://blog.secaserver.com/2011/07/mysql-daily-backup-and-transfer-to-other-server/
Если вы не хотите хранить файл на своем локальном компьютере, вы можете попробовать что-то вроде этого:
mysqldump -u db_user -p db_password db_name| ssh user@example.com "cat > /path/to/dump.sql"
Чтобы сжать файл перед передачей (ssh
также попытается сжать свой трафик):
mysqldump -u db_user -p db_password db_name| gzip | ssh user@example.com "cat > /path/to/dump.sql.gz"
Возможно, в вашей удаленной системе cat
автоматически распакует поток, если вы направите его в файл с именем .gz
. В этом случае просто используйте другой суффикс.