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("sunucuip",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 -password 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.

Kaynak: Cağrı Ersen Hocam.

  1. mod_security ve disable_functions’a takılır bu script :)

  2. :) denedindemi takıldı yoksa tahminmi. Takılırsa ona göre bir çözüm buluruz kardeşim :)

  1. Geri İzleme yok.