Ssh Cron ile Otomatik Sql Yedeği

Kullanabilmeniz icin root yetkinizin olmasi sarttir sql in buyuklugu ne olursa olsun eksiksiz olarak yedekliyebilirsiniz isterseniz belirttiginiz ftp adresine yada sunucu adresine yada localhost daki yani kendi sunucunuzdaki belirttiginiz herhangi bir dizine de sql yedeginizi yorulmadan hergun backuplayabilirsiniz.

Kurulum:

Server'a root olarak giris yapin

cd /root

pico /root/backup.sh

Asagidaki Scripti burda olusturmus oldugumuz backup.sh dosyasina yapistiriyoruz ve
gerekli ayarlari yapip

ctrl+x

diyerek kaydedin ve cikin sonra calistirma yetkisi atiyalim

chmod +x /root/backup.sh

root kullanicisina bu yetkiyi verdikten sonra backup.sh scriptimizi crona ekliyelim

crontab -e

daha sonra

00 00 * * * /root/backup.sh

seklinde cronumuzu hergun gece saat 12 de sql imizi tam anlamiyla yedeklemesi icin cronumuzu calistiriyoruz.


#!/bin/sh
# ========> Ayarlar>================
# DB Adi
databases="veritabaniadi"
# yedegin yuklenecegi yer
backupdir=/root/yedeklerim
mysqldumpcmd=/usr/bin/mysqldum p
# db sifresi
userpassword=" --user=kullanıcıadı --password=şifre"
dumpoptions=" --quick --add-drop-table --add-locks --extended-insert --lock-tables"
gzip=/bin/gzip
uuencode=/usr/bin/uuencode
mail=/bin/mail
# Backupun e-maille gonderilmesini istiyormusun?? "y"= Evet "n"= Hayir
sendbackup="n"
subject="Serverdan yedekleme"
mailto="e-mail@adresiniz.com"
# Yedegin baska bir FTP hesabina yuklenmesini istermisin? "y"= Evet "n"= Hayir
ftpbackup="n"
ftpserver="ftp.domain.tld"
ftpuser="ftp_username&quo t;
ftppasswd="ftp_pass"
# Uzak FTP dosya yolunu yazin ( ornek C:\yedeklerim
ftpdir="/root/yedeklerim& quot;
#========> Genel ayarlar.>====================
# Haftanin hangi gunu? (0-6)
DOW=`date +%w`
# Belirlenen klasor yoksa kendin olustur.
mkdir -p ${backupdir}
if [ ! -d ${backupdir} ]
then
echo "yerel klasor: ${backupdir}"
exit 1
fi
echo "Dumping MySQL Databases"
for database in $databases
do
$mysqldumpcmd $userpassword $dumpoptions $database> ${backupdir}/${DOW}-${database }.sql
done
echo "Compressing Dump Files"
for database in $databases
do
rm -f ${backupdir}/${DOW}-${database }.sql.gz
$gzip ${backupdir}/${DOW}-${database }.sql
done
if [ $sendbackup = "n" ]
then
for database in $databases
do
$uuencode ${backupdir}/${DOW}-${database }.sql.gz> ${backupdir}/${database}.sql.gz
$mail -s "$subject : $database" $mailto <${backupdir}/${DOW}-${data base}.sql.gz
done
fi
echo "FTP file to $ftpserver FTP server"
if [ $ftpbackup = "y" ]
then
for database in $databases
do
echo "==> ${backupdir}/${DOW}-${database }.sql.gz"
ftp -n $ftpserver <
user $ftpuser $ftppasswd
bin
prompt
cd $ftpdir
lcd ${backupdir}
put ${DOW}-${database}.sql.gz
quit
EOF
done
fi
ls -l ${backupdir}
echo "Backup Bitmistir..!"
exit

You may also like...

2 Responses

  1. Carlotta diyor ki:

    Great work.

  2. Serkan diyor ki:

    Selamlar.

    Şu kısmı tam olarak nasıl düzenlemeliyiz?

    DOW=`date +%w`

    Yani örneğin her pazar yada haftanın 6. günü demek istesek?

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir