Резервное копирование 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 со ссылкой на это имя файла.

Другие вопросы по тегам