Давайте я немного расскажу свою задачу ,а то я уже сам запутался и вас запутаю
Нужно объединить бекап Mysql + Data + заливка по фтп
В каждую папку с названием сайта будет складываться /tmp/backup/site1/dumps/base_name.sql - база. /tmp/backup/site2/backups/folder_name.tar.gz - файлы
затем отправка по фтп ,средствами ncftpput
данные о местоположении база->директория , название сайта->директория хочу брать от сюда:
структура симлинков mysql
database1->/var/www/site1/html/ database2->/var/www/site2/
структура симлинков sites
site1.com->/var/www/site1/html/ site2.com->/var/www/site2/
или же вот этот вариант
grep "ServerName\|DocumentRoot" /etc/apache2/sites-enabled/* | cut -d "\"" -f 2 | sed 'N;s/\n/ /' | while read root_name root_dir ; do
Код: Выделить всё
#/bin/bash
database=/tmp/data/mysql
server=/tmp/data/names
pass=password123
USERNAME='user'
HOSTNAME='server'
PASSWORD='pass'
cat /tmp/data/names /tmp/data/mysql | sed 'N;s/\n/ /' | while read curent_name curent_mysql
do
mkdir -p /tmp/backup/$curent_name/dumps/ /tmp/backup/$curent_name/backups/
вот тут мой вопрос дело в том что названия баз идут в алфавитном порядке и когда создается вызов $curent_name то он будет скорее всего не
соответствовать вызванному в этот же момент $curent_mysql
Поэтому я думал вызвать функцию бекапа Mysql баз в отдельном цикле
может быть еще проще будет создать файл конфига где в каждой строке будет запись к примеру name:mysql:dir
а уже из этого конфига будет парситься текщуие - названия сайта ,база данных и путь
Код: Выделить всё
mysqldump --skip-lock-tables --events --routines -p$pass $curent_mysql > /tmp/backup/$curent_name/dumps/$curent_mysql-`date +%Y-%m-%d`.sql
root_dir=$(readlink $curent_name)
dirname=$(basename $root_dir)
cd $root_dir/../
tar pc $dirname --exclude=.git | gzip -5 > /var/backup_test/$root_name/backups/$dirname.`date +%Y-%m-%d`.bak.tar.gz
ncftpput -R -m -z -r 10 -v -u $USERNAME -p $PASSWORD $HOSTNAME $curent_name /var/backup_test/$root_name/backups/.
done