簡體   English   中英

PHP-MySQL-每日備份數據庫

[英]PHP - MySQL - Backup database daily

我已經制定了一個在PHP和MySQL上(服務器端)工作的議程。 我需要做的最后一件事是對數據庫進行每日的授權備份。

這是我認為最簡單的方法:編寫一個php腳本,該腳本每24小時將一次文件(其名稱為時間戳)保存在服務器的某些文件夾中。 將此文件與Time Machine或其他一些備份軟件結合起來以將該文件夾備份到外部磁盤中就足夠了。

所以現在的問題是:如何使php腳本每天自動運行一次? 如何使用php腳本中的sql備份保存文件?(類似於phpMyAdmin導出為sql)

謝謝!

如果您正在運行apache服務器:

sudo nano /etc/crontab

添加以下行:

0 0 * * * root mysqldump -u root -proot db_name > /home/username/db_backup/$( date +"\%Y_\%m_\%d" ).sql

0 0 * * * =>每24小時

如果您的服務器是Linux,則可以使用以下腳本創建cron: cronsql.sh

#!/bin/bash

path=/home/backup/
projet=(databasename1 databasename2)
now=$(date +"%Y-%m-%d")

for arg in ${projet[*]}
do
    if [ ! -d $path$arg ]; then
        mkdir $path$arg
    fi
    cd $path$arg
    mkdir dump$now
    cd dump$now
    mysqldump -dBR --triggers -p"dbpassword" $arg > structure.sql
    mysqldump --no-create-info -p"dbpassword" $arg > data.sql

done

它將生成一個帶有數據庫名稱的文件夾。 里面,一個帶日期的文件夾里面的文件夾,一個structure.sql文件和一個data.sql文件

>databasename1
---->20151009
    ---->data.sql
    ---->structure.sql
---->20151008
    ---->data.sql
    ---->structure.sql
---->20151007
    ---->data.sql
    ---->structure.sql

對於cron使用crontab -e

如果cronsql.sh位於/ home / backup /中,則添加59 23 * * * /home/backup/cronsql.sh

最后但並非最不重要的一點是,您可以在crontab中添加

01 01 * * * find /home/backup/ -mindepth 2 -ctime +30 -exec rm -fr {} +

它將刪除30天之前的所有文件/文件夾。 因此,您每30天都有一份備份。 無需手動清潔

我發現,如果您正在運行Windows,則可以使用* bat來完成。 這將以zip的形式保護您的數據庫,也可以通過稍微更改此腳本將其上傳到ftp中。 請點擊以下鏈接: http : //www.redolive.com/utah-web-designers-blog/automated-mysql-backup-for-windows/如果您有任何疑問,可以輕松進行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM