Собрался наконец автоматизировать некоторые рутинные операции. Скрипт предназначен для ручного запуска из консоли.
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=gmtime(time);
$date = sprintf("%d.%02d.%02d_%02d-%02d-%02d",$year+1900,$mon+1,$mday,$hour,$min,$sec);
print "Date is $date\n";
[user=databases]databases[/user] = ("bd1", "bd2");# имена баз данных которые надо забэкапить
$mysql_user = 'username';
$mysql_pass = 'pass';
$path = '/home/www/mysite.ru';
$archive_name = "$date.tar.gz";
$http_link = 'http://mysite.ru';
#создаем катаклог, в качестве имени - текущяя дата
system "mkdir '$date'";
#делаем дампы каждой БД
foreach $database ([user=databases]databases[/user]){
print "Backuping database: $database... ";
system "mysqldump -u $mysql_user -p$mysql_pass $database > $date/$database.sql";
print "Done.\n";
}
#архивиреем дампы и перемещаем в папку, которую до этого создали
system "tar -czf $archive_name $date";
system "mv $archive_name $date";
#копируем архив в корень нашего домена и предлагаем его скачать
system "cp $date/$archive_name $path/$archive_name";
print "You can download archive: $http_link/$archive_name\n";
# после нажатия enter, архив из корня домена будет удален и удалены промежуточные файлы с дампами баз данных.
<>;
system "rm $path/$archive_name";
system "rm $date/*.sql";
print "Cleared. Tasks done.\n";
почему perl? я влюблен в его синтаксис, жаль, что друпал не на перле)
PS а подсветка не предусмотренна? ( < code type="perl" > )
Комментарии
Здесь не лучше решение?
спасибо, хорошая информация
но мое решение именно для меня лучше, потому что оно целиком делает то, что мне нужно не больше не меньше)
единстевенное наверно надо --add-drop-table добавить
Все проще. создаем в mysql пользователя backup который имеет доступы к базам на чтение.
и пишем такой скрипт:
backupuser='backupuser'
backuppasswd='тут идет пароль но мы ваем его не покажем'
mysqldump='/usr/bin/mysqldump'
#this function makes mysqldump of the given database to the given directory
# and makes chmod and chown of file to the given group
make_dump(){
_database=$1;
_directory=$2;
_user=$3;
_group=""$4;
_mod=""$5;
_path="${_directory}/${_database}.sql";
_command="${mysqldump} --skip-extended-insert -u${backupuser} -p${backuppasswd} ${_database}";
${_command} > ${_path};
if [ "a${_user}" != "a" ] && [ "a${_group}" != "a" ]; then
chown ${_user}:${_group} ${_path}
fi
if [ "a${_mod}" != "a" ]; then
chmod ${_mod} ${_path}
fi
}
# а теперь просто вызываем функцию которую нарисовали с нужными параметрами.
#my sites
mypath=/home/brainstorm
make_dump brainstorm ${mypath} brainstorm www-data 640
make_dump insourcing ${mypath} brainstorm www-data 640
make_dump projectpier ${mypath} brainstorm www-data 640
#remstroy
make_dump remstroy /mnt/brainstorm/projects/remstroy brainstorm www-data 640
#timon
make_dump timon /mnt/timon/backup timon www-data 640
вот собственно и все. надо еще базу бекапить и класть в каталог пользователя - добавляем еще строку make_dump
да кстати. БД лучше не сжимать а тащить rsync несжатый файл.
очень удобно.
точно! что-то я недодумался, пошел искать rsync для виндоус
если есть ссылки про настройку бекапа на домашний комп под windows c сайта кидайте
Тут где-то была тема. Ищите.
по больше ВЕЛОСИПЕДОВ хороших и разных.
На том же сайте myqsl есть все необходимое.
да ну? такие же велосипеды.