Bir mysql sunucusundan mysqldump ile backup alıp ftp üzerinden uzaktaki bir sunucuya gönderen güzel bir php script.
İçeriği aşağıdaki gibi olan bu scripti kendi sisteminize göre düzenledikten sonra cron job olarak tanımlayabilirsiniz. Böylece periyodik olarak alınan backupları istediğiniz bir lokasyonda muhafaza edebilirsiniz.
Gerekenler:
PHP
Bir FTP Hesabı
ve son olarak MYSQL
Uygulanışı:
1 - Aşağıdaki script içeriğini serverınızda oluşturacağınız backuptoftp.php isimli bir dosyaya kopyalayın.
function publish_ftp($destination_file,$source_file){
//echo $this->ftphost;
$conn_id = ftp_connect("
[Linkleri görebilmek için üye olun veya giriş yapın.]// login with username and password
$login_result = ftp_login($conn_id, "ftp_kullanici_adi", "ftp_sifre");
// check connection
if ((!$conn_id) || (!$login_result)) {
$errmsg .= "FTP connection has failed!";
//$errmsg .= "Attempted to connect to $ftp_server for user $ftp_user_name";
die;
} else {
//echo "Connected to $ftp_server, for user $ftp_user_name";
}
// upload the file
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
//$upload = 1;
// check upload status
if (!$upload) {
$errmsg .="FTP upload has failed!";
} else {
$sucmsg .="Uploaded $source_file to $ftp_server as $destination_file";
// copy($source_file,$destination_file_copy);
}
// close the FTP stream
ftp_quit($conn_id);
if ($sucmsg) {
return true;
}
//echo $errmsg;
}
exec("/usr/local/bin/mysqldump -u username -ppassword db_ismi > \
/backup/dizini/db_ismi.sql");
exec("gzip -f /backup/dizini/dbname.sql");
publish_ftp("/db_ismi.sql.gz","/backup/dizini/db_ismi.sql.gz");
//birinci dosya hedef, ikincisi kaynak
?>
2 - Kırmızı ile belirtilmiş olan ftp, path, backup’ı alınacak db ismi, kullanıcı adı ve sifre gibi bilgileri düzenleyin.
3 - Scripti çalıştırıp test edin.
/usr/local/bin/php /php/dosyanızın/bulundugu/dizini/backuptoftp.php
Not: Ben bu scripti FreeBSD üzerinde çalıştırıyorum ve php “/usr/local/bin” pathi altında duruyor. Php’nin yerini saptamak için “whereis php” komutunu çalıştırabilirsiniz. Aynı şey script içindeki mysqldump için de geçerli.
4 - Sorunsuz bir şekilde çalıştığına emin olduktan sonra cron job olarak sisteme ekleyin.
45 06 * * * /usr/local/bin/php /php/dosyanızın/bulundugu/dizini/backuptoftp.php (Hergün 06:45′te çalışır.)
ALINTI (Denenmemiştir, deneyen yazsın lütfen )
Çalışmaz sa alttaki satırın başındaki slashlar(//) kaldırın
//echo $this->ftphost;$conn_id = ftp_connect(”
[Linkleri görebilmek için üye olun veya giriş yapın.]