- Автор темы
- Администратор
- Модер.
- Команда форума
- #1
Первым делом всегда-всегда-всегда нужно заботиться о резервной копии. Вариантов огромное множество, но лично я написал для себя простой и понятный скрипт для ежесуточного запаковывания данных с любого сервера, в том числе и shared-хостинга.
Этот скрипт нужно сохранить в файл, и добавить в cron.
Dropbox
Данная инструкция является очень вольным переводом этой статьи.
1. Качаем нужную версию для сервера.
wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86"или
wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86_64"
Если не знаете, что у вас за ОС, выполните команду
uname -a
У меня вот такой вывод:
Linux bezumkin 3.1.0-1.2-xen #1 SMP Wed Dec 7 19:01:22 MSK 2011 i686 GNU/Linux
i686 — это 32 битная ОС.
2. Распаковываем
tar -xzvf dropbox.tar.gz
3. Запускаем
~/.dropbox-dist/dropboxd
В первый раз он выведет ссылку на сервис, которую вам надо открыть у себя на компе и добавить этот сервер в число компьютеров аккаунта.
Пока не добавите — он так и будет выдавать эту ссылку. После добавления перезапускаем сервис (ctrl+c для прекращения работы) и мы должны увидеть "Client successfully linked, Welcome!"
4. Все, ваши файлы уже начинают синхронизироваться.
5. Устанавливаем Dropbox как службу. Для этого, от рута выполняем
Затем меняем в /etc/init.d/dropbox юзера для запуска (там где написано «user1 user2»), сохраняем и делаем
6. Запускаем
У Dropbox есть консольная утилита для работы, dropbox.py нужно ее скачать и сделать исполняемой:
С ее помощью, можно настроить синхронизацию более гибко (нам же нужна только директория с бэкапами?). Для этого есть параметр exclude.
Ну и понятно, что в скрипте резервного копирования нужно поменять BACKUP на директорию внутри Dropbox.
PHP:
#!/bin/bash
USER=mysqlroot
PASSWORD=mysqlrootpass
BACKUP=/home/bezumkin/Backup
OLD=7 # Сколько дней хранить бэкапы
# Создаем директорию для сегодняшнего бэкапа
DIR=$BACKUP/`date '+%Y-%m-%d'`
mkdir $DIR
cd $DIR
# Сохраняем базы данных
for i in `mysql -u $USER -p$PASSWORD -e'show databases;' | grep -v information_schema | grep -v Database`;
do
# Не обрабатываем служебные БД и все БД сайтов modx-test.com, у них имена типа s1234.
if [[ "$i" != "mysql" && "$i" != "performance_schema" && ! "$i" =~ ^s[0-9] ]]
then mysqldump --skip-lock-tables -u$USER -p$PASSWORD $i | bzip2 -c > www-$i.sql.bz2;
fi
done
# Сохраняем системные директории
tar -cjf sys-etc.tar.bz2 /etc/
tar -cjf sys-log.tar.bz2 /var/log/
tar -cjf sys-root.tar.bz2 /root/
# Сохраняем сайты
for i in `ls /var/www/`;
do
# Обрабатываем все, кроме сайтов modx-test.com
if [[ ! "$i" =~ ^s[0-9] ]]
then tar -cjf www-$i.tar.bz2 /var/www/$i --exclude=cache/*;
fi
done
# Чистим старые логи и бэкапы
find /var/log -type f \( -name "*.gz" -o -name "*.1*" \) -exec rm '{}' \;
# Если эта команда верно показывает старые директории после бэкапа - расскомментируйте следующую
find $BACKUP/* -maxdepth 0 -ctime $OLD -exec echo '{}' \;
# Эта команда удаляет старые резервные копии, и я ее закомментировал на всякий случай.
#find $BACKUP/* -maxdepth 0 -ctime $OLD -exec rm -r '{}' \;
Этот скрипт нужно сохранить в файл, и добавить в cron.
Dropbox
Данная инструкция является очень вольным переводом этой статьи.
1. Качаем нужную версию для сервера.
wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86"или
wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86_64"
Если не знаете, что у вас за ОС, выполните команду
uname -a
У меня вот такой вывод:
Linux bezumkin 3.1.0-1.2-xen #1 SMP Wed Dec 7 19:01:22 MSK 2011 i686 GNU/Linux
i686 — это 32 битная ОС.
2. Распаковываем
tar -xzvf dropbox.tar.gz
3. Запускаем
~/.dropbox-dist/dropboxd
В первый раз он выведет ссылку на сервис, которую вам надо открыть у себя на компе и добавить этот сервер в число компьютеров аккаунта.
Пока не добавите — он так и будет выдавать эту ссылку. После добавления перезапускаем сервис (ctrl+c для прекращения работы) и мы должны увидеть "Client successfully linked, Welcome!"
4. Все, ваши файлы уже начинают синхронизироваться.
5. Устанавливаем Dropbox как службу. Для этого, от рута выполняем
Код:
sudo wget -O /etc/init.d/dropbox "https://gist.github.com/bezumkin/6712351/raw/108fc8af551cb4fdf7cdd08b891a45f405d283dc/dropbox" && sudo chmod +x /etc/init.d/dropbox
Затем меняем в /etc/init.d/dropbox юзера для запуска (там где написано «user1 user2»), сохраняем и делаем
Код:
sudo update-rc.d dropbox defaults
Код:
sudo service dropbox start
Код:
wget http://www.dropbox.com/download?dl=packages/dropbox.py -O ~/.dropbox/dropbox.py && chmod +x ~/.dropbox/dropbox.py
Код:
~/.dropbox/dropbox.py help
Note: use dropbox help <command> to view usage for a specific command.
status get current status of the dropboxd
help provide help
puburl get public url of a file in your dropbox
stop stop dropboxd
running return whether dropbox is running
start start dropboxd
filestatus get current sync status of one or more files
ls list directory contents with current sync status
autostart automatically start dropbox at login
exclude ignores/excludes a directory from syncing
С ее помощью, можно настроить синхронизацию более гибко (нам же нужна только директория с бэкапами?). Для этого есть параметр exclude.
Код:
~/.dropbox/dropbox.py help exclude
dropbox exclude [list]
dropbox exclude add [DIRECTORY] [DIRECTORY] ...
dropbox exclude remove [DIRECTORY] [DIRECTORY] ...
"list" prints a list of directories currently excluded from syncing.
"add" adds one or more directories to the exclusion list, then resynchronizes Dropbox.
"remove" removes one or more directories from the exclusion list, then resynchronizes Dropbox.
With no arguments, executes "list".
Any specified path must be within Dropbox.
Ну и понятно, что в скрипте резервного копирования нужно поменять BACKUP на директорию внутри Dropbox.