Mysql - Backup to FTP (PHP Script)
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("ftp.sunucusunun.ipsi",21);
// 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.)
Hepsi bu.
Belki şu konular da ilginizi çeker:
Bu yazı hakkındaki görüşlerinizi oy vererek belirtebilirsiniz. Kategori: *nix, Genel |




Cevap ver
Merhabalar,
Evet haklisiniz, sunucudan kopyala yapıştır yaparken hata yapmisim ve conn_id bölümü comment out edilmiş. Orjinali şöyle;
//echo $this->ftphost;
$conn_id = ftp_connect(”ftp.sunucusunun.ipsi”,21);
Hatayı düzelttim.
Ilginiz için teşekkür ederim.
Cevap ver