Резервное копирование FTP для сайта и базы данных - Rackspace Cloud Sites
Мне нужна помощь в создании сценария резервного копирования для сайтов Rackspace Cloud.
Сайты нуждаются в ежедневном резервном копировании как для веб-сайта, так и для своих баз данных mysql (на некоторых сайтах имеется до 4 баз данных), тогда резервные копии должны быть удалены с ftp-сайта.
Похоже, что я могу достичь этого только с помощью заданий cron. Rackspace показывает пример сценария резервного копирования, но показывает только, как отправить файлы в хранилище облачных файлов (см. Ниже). Каков синтаксис FTP для отправки созданного файла на удаленный сервер?
РЕДАКТИРОВАТЬ все работает полный сценарий:
webroot - это /mnt/stor1-wc1-dfw1/381384/****.*******.com
#!/bin/sh
webroot="YOUR WEBROOT"
db_host="YOUR DB HOST"
db_user="YOUR DB USERNAME"
db_password="YOUR DB PASSWORD"
db_name="YOUR DB NAME"
#Set the date and name for the backup files
date=`date '+%F-%H-%M'`
backupname="backup.$date.tar.gz"
#Dump the mysql database
mysqldump -h $db_host -u $db_user --password="$db_password" $db_name > $webroot/db_backup.sql
#Backup Site
tar -czpvf $webroot/sitebackup.tar.gz $webroot/web/content/
#Compress DB and Site backup into one file
tar --exclude 'sitebackup' --remove-files -czpvf $webroot/$backupname $webroot/sitebackup.tar.gz $webroot/db_backup.sql
#Upload your files via FTP
ftp -n $ftphost <<END
user $user $password
bin
lcd $webroot
put $backupname
quit
END
#After your backup has been uploaded, remove the tar ball from the filesystem.
rm $webroot/$backupname
2 ответа
Вы могли бы использовать LFTP
lftp -u user,password -e "cd /backup/path; lcd /remote/local/packup/path; put backupfile; quit" remotehost.tld
Хотя вам может быть безопаснее использовать lftp с sftp
lftp -u user,anything sftp://remotehost.tld -e "cd /backup/path; lcd /remote/local/packup/path; put backupfile; quit"
Который будет использовать ключи без пароля для аутентификации и передачи файла через sftp. В любом случае вы хотите убедиться, что пользователь, которого вы используете для резервного копирования, имеет как можно меньше привилегий для выполнения требуемой работы. С достаточно современным sshd Вы можете заблокировать пользователя на удаленном сервере, используя sftp, добавив
Match User user
ChrootDirectory /somedir
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
в файл / etc / ssh / sshd_config и перезапустите sshd. Это позволяет только указанному пользователю использовать sftp в дереве / somefir.
Код в вопросе должен быть сохранен в виде файла.sh, а затем на панели функций облачного сайта добавить задание cron со ссылкой на это имя файла.