У меня есть один локальный сервер ubuntu, на котором у нас были все наши сайты разработки. Все они являются сайтами на основе php. Я хотел бы знать, можем ли мы иметь скрипт или что-то еще для ежедневного резервного копирования файлов и базы данных на внешний жесткий диск?
Пожалуйста, дайте мне знать.
Это небольшой сценарий, который я написал для резервного копирования моих конфигураций apache, веб-файлов и БД на Amazon S3. Единственная цель сервера - это веб-сервер, на котором каждый разработчик использует свой собственный домашний адрес. Итак, в / home есть файл со списком пользователей, для которых необходимо создать резервную копию.
#!/bin/bash
# 2012 Bart De Vos
# This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# location of this script
DIRECTORY=$(cd `dirname $0` && pwd)
INSTALLER_FILENAME=`basename $0`
# error handling
function error_exit
{
echo "Error on line ${1:-'Aborting script.'}" 1>&2
exit 1
}
function backup
{
# exit on errors
set -e
# getting hostname
HOSTNAME_FQDN=`hostname --fqdn` || error_exit "${LINENO}: Error determening hostname"
echo "Determening timestamp"
timestampbackup=`/bin/date +%Y%m%d%H` || error_exit "${LINENO}: Error determening timestamp"
echo "Create backupdir"
/bin/mkdir /backup/${timestampbackup} || error_exit "${LINENO}: Error creating backupdir"
echo "Dump and save MYSQL for all dbs"
/usr/bin/mysqldump --all-databases --opt -c -e -Q -uScriptRunner -pMySuperSecretPasswordThaIAlmostForgotToRemoveFromTheScript | /bin/gzip > /backup/${timestampbackup}/sqlbackup.sql.gz || error_exit "${LINENO}: Error backing up mysql"
echo "Itterate users in /home/.backup"
for username in `awk -F: '{print $1}' /home/.backup`
do
echo "Backing up user: $username"
/bin/tar -czpf /backup/${timestampbackup}/${username}.tar.gz /home/${username} || error_exit "${LINENO}: Error backing up $username"
done
echo "Get configs"
/bin/tar -czpf /backup/${timestampbackup}/httpdconfigs.tar.gz /etc/httpd/conf.d/ || error_exit "${LINENO}: Error backing up httpd conf.d"
echo "Copy to S3 bucket"
/usr/bin/s3cmd --config=/backup/.s3cfg put /backup/ s3://${HOSTNAME_FQDN} --recursive || error_exit "${LINENO}: Error with transfer to S3"
echo "Remove backupdir"
/bin/rm /backup/${timestampbackup} -rf || error_exit "${LINENO}: Error deleting backupdir"
echo "All done!"
}
backup
Прежде чем вы сможете его использовать, вам необходимо установить s3cmd и создать .config
файл с вашими учетными данными безопасности S3. (Создаст это при первом использовании).
Не забудьте проверить / изменить пути, потому что они могут отличаться в зависимости от версии / дистрибутива.