Kotak surat QQ saya kapasitasnya 16G. Katanya kapasitasnya tidak terbatas dan otomatis bertambah. Kalau digunakan untuk backup website di vps, tidak memakan tempat dan nyaman, bagus kan! Ada caranya. Setelah pengemasan, gunakan sendmail untuk mengirim ke kotak surat QQ, sederhana dan cepat.
Saya relatif akrab dengan PHP dan menggunakan PHPMailer-Lite untuk memanggil sendmail untuk mengirim file cadangan. Jika Anda tidak dapat menggunakan sendmail, Anda dapat menggunakan smtp untuk mengirim, namun lebih lambat.
Jika lampiran situs web besar disimpan setiap hari, Anda juga dapat menggunakan metode ini untuk mengemas dan mencadangkan lampiran setiap hari. Bagaimanapun, QQ mail memiliki kapasitas tidak terbatas, jadi tidak perlu menggunakannya dengan sia-sia.
Perlu mengunduh http://nchc.dl.sourceforge.net/PRoject/phpmailer/phpmailer%20for%20php5_6/PHPMailer-Lite%20v5.1/PHPMailer-Lite_v5.1.zip
Berikut isi kutipannya:
<?php
/**
* Cadangan blog dan kirim ke email
* Sangat nyaman dan cocok untuk cadangan situs kecil
*
* penggunaan:
* /usr/local/php/bin/php /path/to/mailbackup.php
*
* @penulis Pan Chunmeng<cmpan(at)qq.com>
* @link <a href=" http://yulans.cn/php/mail-backup">yulans.cn</a >
* @lisensi NEWBSD
*/
//require_once('class.phpmailer-lite.php');
require_once('PHPMailerLite.php');
// mengatur
$mailTo = '[email protected]' ; // Alamat email mana yang akan dikirim
$mailFrom = '[email protected]' ; // Alamat email untuk mengirim lampiran
$dataDir = '/data/MySQL/3306/data/yulans/'; // jalur database MySQL dari situs web
$attDir = '/web/yulans.cn/www/wp-content/uploads/'; // Jalur lampiran
$dataBakFile = 'uploads.yulans.cn.gz';
$attBakFile = 'data.yulans.cn.gz';
date_default_timezone_set('Asia/Shanghai'); // PHP 5 >= 5.2.0
$gzPre = tanggal('Ymd-His-');
print "Pesan Cadangan:n";
print "mulai pencadangan:".tanggal('Ymd H:i:s').."n";
//Lampiran paket
$attGz = "/tmp/{$gzPre}{$attBakFile}"; // Paket lampiran terkompresi yang akan dikirim
sistem("tar zcf $attGz $attDir");
cetak "$attGz selesai!n";
//Salin file database dan paketkan
$dbGz = "/tmp/{$gzPre}{$dataBakFile}"; // Paket kompresi database lampiran yang akan dikirim
$dbTmp = "/tmp/{$gzPre}db_bak_tmp";
sistem("cp -R $dataDir $dbTmp");
sistem("tar zcf $dbGz $dbTmp");
cetak "$dbGz selesai!n";
$mail = PHPMailerLite baru(benar);
$mail->IsSendmail();
mencoba {
$pesan = '';
$mail->SetFrom($mailFrom, 'Bak');
$mail->AddAddress($mailTo, 'cm pan');
$mail->Subjek = 'Cadangan Yulans.cn';
$mail->AltBody = tanggal('Ymd H:i:s').'!';
$mail->MsgHTML(tanggal('Ymd H:i:s').'! OK');
//Tambahkan lampiran
if(file_exists($attGz)) {
$mail->TambahkanLampiran($attGz);
$msg .= "Tambahkan Lampiran $attGz selesai!<br />n";
} kalau tidak {
$msg .= "Lampiran $attGz tidak ada!<br />n";
}
if(file_exists($dbGz)) {
$mail->TambahkanLampiran($dbGz);
$msg .= "Tambahkan Lampiran $dbGz selesai!<br />n";
} kalau tidak {
$msg .= "Lampiran $dbGz tidak ada!<br />n";
}
cetak $pesan;
$mail->MsgHTML($pesan);
$mail->Kirim();
} tangkapan (phpmailerException $e) {
echo $e->pesan kesalahan();
} tangkapan (Pengecualian $e) {
gema $e->getMessage();
}
// Hapus file sementara
sistem("rm -f $attGz");
sistem("rm -f $dbGz");
sistem("rm -rf $dbTmp");
print "Pencadangan Selesain";
Setelah semua konten file di atas diunggah ke server, buat file baru di /etc/cron.daily/ agar sistem dapat menjalankan skrip cadangan setiap hari.
#!/bin/sh
/webserver/php/bin/php /path/to/worker.php #Jalur skrip php di atas