Mysql – Backup to FTP (PHP Script)
Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYaSvMG4' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349
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.
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.
Bu yazılar da ilginizi çekebilir:
- Mysql Backup to FTP (Shell Script)
- MySQL Replication durumunu bir script ile check etmek
- MySQL – Stored Procedure ve Function’ların Yedeklenmesi
- Php Upload File Size
- Mysql Root Şifresini Resetlemek – Password Recovery
Merhaba,
guzel bir kod, tam ihtiyacim olduğu bir anda işime yaradı.
ufak bir not. alttaki satırın başındaki slashlar(//) olmaması gerekli.
//echo $this->ftphost;$conn_id = ftp_connect(“ftp.sunucusunun.ipsi”,21);
bende kaldırınca çalışmaya başladı.
teşekkürler.
[Cevapla]
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.
[Cevapla]
yapılan projelerin birçoğuna eklenmesi gereken bir betik. teşekkürler.
[Cevapla]