Categories
Linux

如何使用crontab在Linux服務器上自動備份網站

要為網站備份數據,您有很多解決方案,例如使用FTP(FileZilla,WinSCP…),文件管理器,Linux的crontab,Cpanel的備份嚮導,Webmin……但是要節省時間,您應該使用crontab和將數據移至安全位置。

備份源代碼網站

首先,您必須確定源代碼網站的位置。在此示例中,我將把源代碼網站保存在/ var / www / public_html。之後,您可以使用以下命令按日期將源代碼壓縮到/ home / backup文件夾。

1個tar -zcvpf /home/backup/myweb-'date +%Y%m%d'.tar.gz /var/www/public_html

z:使用“ gzip”壓縮備份文件以使其較小。
c:創建新的備份存檔
v:詳細列出要處理的文件
p:保留放入存檔中的文件的權限,以便以後還原。
f:以下是存檔文件名

網站備份數據庫

要備份網站的數據庫,可以使用以下命令:

1個mysqldump -u root -p123456 mydatabase| gzip > /var/www/home/backup/db/db-`date +%Y%m%d`.sql.gz
  • mysqldump:用於在Linux上備份MySQL的命令
  • -u root -p123456:MySQL的管理員帳戶
  • mydatabase:數據庫名稱將被備份。
  • | :管道命令符號。
  • gzip>:壓縮擴展名為sql.gz的文件,新文件將等於原始文件的1/5。
  • / var / www / home / backup / db /:位置將保存備份文件。
  • db-date +%Y%m%d.sql.gz:帶有文件後綴的備份文件名是備份時間,例如:db-20160430.sql

自動運行備份

要自動運行備份命令,可以使用crontab命令。 Crontab  (cron作業)或cron時間表是一組特定的執行指令,用於指定要執行的日期,時間和命令。crontab可以具有多個執行語句。

使用crontab的常用命令:

crontab -e    編輯crontab文件,或者創建一個(如果尚不存在的話)。
crontab -l     crontabs的crontab列表,顯示crontab文件的內容。
crontab -r    刪除您的crontab文件。
crontab -v    顯示上次編輯crontab文件的時間。(此選項僅在少數係統上可用。)

下圖將清楚地說明有關crontab命令的信息

星號
通常,您會看到一個星號(*)而不是數字。這代表該職位的所有可能數字。例如,分鐘位置的星號會使它每分鐘運行一次。

例:

01 * * * * root echo“此命令每隔一小時運行一次”
17 8 * * * root echo“該命令每天早上8:17運行”
17 20 * * * root echo“此命令每天晚上8:17運行”
00 4 * * 0 root echo“此命令在每個星期日的凌晨4點運行”
* 4 * * Sun root echo“這也是”
42 4 1 * * root echo“此命令在每月的1號上午4:42運行。”
01 * 19 07 * root echo“此命令在7月19日每小時運行一次”

一些流行的cronjobs:

  • @reboot:重啟後運行
  • @yearly:每年運行(0 0 1 1 *)
  • @monthly:每月運行)0 0 1 * *)
  • @weekly:每週運行(0 0 * * 0)
  • @daily:每天運行(0 0 * * *)
  • @midnight:每天午夜運行
  • @hourly:每小時運行(0 * * * *)

自動備份源代碼 
在Ubuntu中,鍵入crontab -e並輸入crontab。
在crontab下,每天凌晨3點將自動備份源代碼。

1個0 3 * * * tar -czf /home/backup/source-`date +\%Y\%m\%d-\%H\%M\%S`.tar.gz /var/www/mysite/public_html

crontab下面將在凌晨3點自動備份MySQL。

1個0 3 * * * mysqldump -u root -p123456 mydb | gzip > /home/backup/db/db-`date +\%Y\%m\%d`.sql.gz