Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: anabolix в Jan 18, 2009, 13:06



Титла: Система за бекъп на MySQL бази данни
Публикувано от: anabolix в Jan 18, 2009, 13:06
Здравейте!

В занятието се иска да се направи система за бекъп на бази данни и папките на апачето системата трябва да може да прави секи ден в продължение на 2 седмици бекъп и на 2 седмици да копира папката на апачето в която се намират уеб сайтовете, като изтече срока да за съхранението на базата и папките да бъдат изтрити.
Но бекъпа трябва да се трансферира до друга линукс или уиндоус машина.

Аз оспях да направя това секи ден в Х чеса да прави бекъп-а на  MySQL и да го препраща на майл. Но за съжаление препращането не може да се установи тъйкато архива е твърде голям !


Това е шел скрипта който прави бекъпа и го архивира .
Код:
#!/bin/sh
mysqldump -uUSER_on_your_mysql_server -pPASS_on_Your_mysql_server --opt site > /sqldata/db1.sql


cd /sqldata/
tar -zcvf sqldata.tgz *.sql
cd /scripts/
perl emailsql.pl

него го вкарвъм в cron скрипта който го стартира в
00 04 * * * /scripts/beckup.sh

Тоест в 4:00 сутринта.

А това е и скрипта който праща архива към Имейл,трябва да имате MIME-lite модула за трансфер и работа с PERL
скриптове.

#!/usr/bin/perl -w
use MIME::Lite;

$msg = MIME::Lite->new(
  From    => gg@maksoft.net,
  To      => gg@maksoft.net,
  Subject => sqldata.tgz MySQL backup!,
  Type    => text/plain,
  Data    => "Here are the MySQL database backups.");

$msg->attach(Type=>application/x-tar,
             Path =>"/sqldata/sqldata.tgz",
             Filename =>"sqldata.tgz");

$msg->send;

Надявъм се да бъда полезен ако не намера помощ ! :)  :D ;)

Skype :gesh_rulezzz


Титла: Re: Система за бекъп на MySQL бази данни
Публикувано от: tyuio в Jan 18, 2009, 14:05
не схванах защо е проблема в големината пощата до която пращашли не приема големи фаилове?
може да го пуснеш в раздела на bash майстора


Титла: Re: Система за бекъп на MySQL бази данни
Публикувано от: foxb в Jan 18, 2009, 16:49
Еми като не работи по пощата качи го с (s)ftp.... [_]3


Титла: Re: Система за бекъп на MySQL бази данни
Публикувано от: anabolix в Jan 20, 2009, 10:55
foxb

FTP пробвах но нестава нещо .. тоест

Код:
#! /bin/bash

# your MySQL server's name

SERVER=neshtosi.com



# directory to backup to

BACKDIR=~/sqldata



# date format that is appended to filename

DATE=`date +'%m-%d-%Y'`



#----------------------MySQL Settings--------------------#



# your MySQL server's location (IP address is best)

HOST=localhost



# MySQL username

USER=root



# MySQL password

PASS=password



# List all of the MySQL databases that you want to backup in here,

# each separated by a space

DBS="site_DB"



# set to 'y' if you want to backup all your databases. this will override

# the database selection above.

DUMPALL=y





#----------------------Mail Settings--------------------#



# set to 'y' if you'd like to be emailed the backup (requires mutt)

MAIL=n



# email addresses to send backups to, separated by a space

EMAILS="1@gmail.com 2@inbox.com 3@goowy.com"



SUBJECT="MySQL backup on $SERVER ($DATE)"



#----------------------FTP Settings--------------------#



# set "FTP=y" if you want to enable FTP backups

FTP=y



# FTP server settings; should be self-explanatory

FTPHOST="IP_HOST"

FTPUSER="User"

FTPPASS="Pass"



# directory to backup to. if it doesn't exist, file will be uploaded to

# first logged-in directory

FTPDIR="backup"



#-------------------Deletion Settings-------------------#



# delete old files?

DELETE=n



# how many days of backups do you want to keep?

DAYS=3



#----------------------End of Settings------------------#



# check of the backup directory exists

# if not, create it

if  [ -e $BACKDIR ]

then

echo Backups directory already exists

else

mkdir $BACKDIR

fi



if  [ $DUMPALL = "y" ]

then

echo "Backing up MySQL databases..."



mysqldump -h $HOST -u$USER -p$PASS --opt $DBS > /sqldata/$DATE-db.sql


cd /sqldata
tar -zcvf $DATE-db.tgz *$DATE-db.sql


fi






# if you have the mail program 'mutt' installed on

# your server, this script will have mutt attach the backup

# and send it to the email addresses in $EMAILS



if  [ $MAIL = "y" ]

then

BODY="Your backup is ready!"

ATTACH=`for file in $BACKDIR/*$DATE-db.tar; do echo -n "-a ${file} ";  done`



echo "$BODY" | mutt -s "$SUBJECT" $ATTACH $EMAILS

       

echo -e "Your backup has been emailed to you! \n"

fi



if  [ $FTP = "y" ]

then

echo "Initiating FTP connection..."



ATTACH=`for file in *$DATE-db.tar; do echo -n "-a ${file} ";  done`


ftp -nv <<EOF

open $FTPHOST

user $FTPUSER $FTPPASS

cd /backup

$ATTACH

quit

EOF

echo -e  "FTP transfer complete! \n"

fi



if  [ $DELETE = "y" ]

then

find $BACKDIR -name "*.sql.gz" -mtime $DAYS -exec rm {} \;



if  [ $DAYS = "1" ]

then

echo "Yesterday's backup has been deleted."

else

echo "The backup from $DAYS days ago has been deleted."

fi

fi



echo Your backup is complete!



Всичко работи добре само на мястото
Код:
ATTACH=`for file in *$DATE-db.tar; do echo -n "-a ${file} ";  done`

явно нещо е сгрешено... неиска да качи файла ! .. иначе прави бекъпа с дата с сичките си екстри .. и тн


Титла: Re: Система за бекъп на MySQL бази данни
Публикувано от: beginner в Jan 20, 2009, 11:14
Здравей,

аз го правя това с най обикновен баш скрипт който дъмпва базата, архивирва дадени папки и след това със scp което ползва sshkey го записвам на друг сървър. В крона съм задал скрипта да се задава когато съм решил и така. Ако това ти върши работа кажи. Ще ти го пусна.

Поздрави


Титла: Re: Система за бекъп на MySQL бази данни
Публикувано от: anabolix в Jan 20, 2009, 12:38
Ами да определенно ми върши :) то по добре да е през SCP .. :)


Титла: Re: Система за бекъп на MySQL бази данни
Публикувано от: beginner в Jan 22, 2009, 13:14
Здрасти,
извинявай бях те забравил :). Ето го скрипта. Не твърдя че е кой знае какво на мен ми върши работа:

#!/bin/bash
#backup script
$time=`date +%Y%m%d`

$file=`backup-$time.tar.bz2`

/usr/bin/mysqldump -A -u backup --password="passhere" --default-character-set=latin1 > mysql.sql
/bin/tar cfj $file mysql.sql /var/www /etc/rc.d/rc.local /etc/crontab /etc/httpd
/usr/bin/scp -q $file backup\@1.2.3.4:~/backups
/bin/rm -rf $file
/bin/rm -rf mysql.sql


Титла: Re: Система за бекъп на MySQL бази данни
Публикувано от: gat3way в Jan 22, 2009, 14:16
Тоя скрипт ме съмнява, че работи, така като го гледам на пръв поглед.

На втори поглед ми хрумна нещо забавно, пробвай да го стартираш така:

time="cat /etc/passwd "  ./script.sh


Титла: Re: Система за бекъп на MySQL бази данни
Публикувано от: smelkomar в Jan 22, 2009, 18:44
Тоя скрипт ме съмнява, че работи, така като го гледам на пръв поглед.

На втори поглед ми хрумна нещо забавно, пробвай да го стартираш така:

time="cat /etc/passwd "  ./script.sh

 ;D