Мне нужно делать еженедельное резервное копирование таблицы mySQL, а затем переносить ее на удаленный компьютер с помощью ftp.
Это команда, которую я сейчас использую в crontab:
0 18 * * 1 /usr/bin/mysqldump --add-drop-table --extended-insert -user -ppass db [table] > /home/myuser/backups/bdd-`date +%d-%m-%Y`.sql
Мне нужно будет заменить последнюю часть команды, чтобы сгенерированный файл sql можно было передать на другой сервер по протоколу ftp.
Я искал и нашел кое-что о "постоянном монтировании удаленного ftp-сервера с помощью curlftpfs в / mnt / ftpserver /", но не нашел шагов для этого в моем Linux
Заранее большое спасибо за любой совет, который вы можете мне дать
Если у вас есть задача, для которой требуется более одной строки оболочки, общий подход заключается в том, чтобы поместить ее в небольшой сценарий оболочки и вызвать этот сценарий оболочки из cron.
0 18 * * 1 /home/myuser/backups/backup-and-ftp-db.sh
где /home/myuser/backups/backup-and-ftp-db.sh содержит что-то вроде
#!/bin/sh
dumpfile=/home/myuser/backups/bdd-$(date +%d-%m-%Y).sql
/usr/bin/mysqldump --add-drop-table --extended-insert -user -ppass db [table] > $dumpfile
lftp -e "put $dumpfile backupdir/$dumpfile ; quit" -u username,password backupserver
Также стоит отметить, что несколько вызовов date в подстановке команд, как это сделал Майк, может привести к другим результатам. Это более вероятно, если дата включает часы / минуты / секунды, однако подумайте, что произойдет, если ваше задание cron начнется незадолго до полуночи - ваш первый вызов даты дает, скажем, bdd-19-05-11.sql, и если mysqldump занимает достаточно много времени, чтобы пройти полночь и вы перейдете в следующий день, ваша вторая команда будет ожидать имя файла bdd-20-05-11.sql. По этой причине я призываю date один раз и сохраните его в переменной.
Вы можете использовать ncftpput, если вы согласны с введением пароля ftp в ваш crontab .. или путь к файлу ncftpput cfg
0 18 * * 1 /usr/bin/mysqldump --add-drop-table --extended-insert -user -ppass db [table] > /home/myuser/backups/bdd-`date +%d-%m-%Y`.sql && ncftpput -u user -p pass host.remote.com /home/myuser/backups/bdd-`date +%d-%m-%Y`.sql remotePath//bdd-`date +%d-%m-%Y`.sql