利用 cPanel Cron jobs 自動備份

利用 cPanel Cron jobs 自動備份

虛擬主機cPanel,有相當好用的全站備份功能。但是你想有一個完整的備份,你必須登錄到的cPanel,然後擊備份按鈕,等備份完成,然後再下載...

這些步驟是不是能自動化呢? 你需要的是使用Cron jobs功能

利用 cPanel Cron jobs 自動備份

操作方式

1.複製以下程式碼

<?php

$auth = base64_encode("cPanel帳號:cPanel密碼");
$domain = "cPanel網址";
$theme = "https://";
$secure = true;
$ftp = false;
$ftpserver = "";
$ftpusername = "";
$ftppassword = "";
$ftpport = "21";
$ftpdirectory = "/";

if ($secure) {
$url = "ssl://" . $domain;
$port = 2083;
} else {
$url = $domain;
$port = 2082;
}

$socket = fsockopen($url, $port);
if (!$socket) {
exit("Failed to open socket connection.");
}

if ($ftp) {
$params = "dest=ftp&server=$ftpserver&user=$ftpusername&pass=$ftppassword&port=$ftpport&rdir=$ftpdirectory&submit=Generate Backup";
} else {
$params = "submit=Generate Backup";
}

fputs($socket, "POST /frontend/" . $theme . "/backup/dofullbackup.html?" . $params . " HTTP/1.0\r\n");
fputs($socket, "Host: $domain\r\n");
fputs($socket, "Authorization: Basic $auth\r\n");
fputs($socket, "Connection: Close\r\n");
fputs($socket, "\r\n");

while (!feof($socket)) {
$response = fgets($socket, 4096);
echo $response;
}

fclose($socket);

?>

以上程式碼儲存成backup.php,上傳到根目錄中

利用 cPanel Cron jobs 自動備份
利用 cPanel Cron jobs 自動備份

2.設定Cron jobs

看你是想要每天執行還是每周,設好時間後

1
指令為 php -f ~/backup.php

就醬子!完成了^^

3.定期刪除備份檔

經過一段時間,在網站空間目錄裡一定有很多的備份檔

避免占用我們的空間,所以我們可以建立一個Cron jobs來定期刪除備份檔

例如:定期刪除30天以前的備份檔程式碼:

<?php
$files = glob("*.tar.gz");
foreach($files as $file) {
if(is_file($file)
&& time() - filemtime($file) >= 30*24*60*60) { // 30 days
unlink($file);
}
}
?>

關於作者 多力哥
利用 cPanel Cron jobs 自動備份
影像創作攝影師/網頁動畫設計師/系統網路工程師/水草研究生
景文科大畢業後,我成為一名網站動畫設計師,並副修MIS電腦資訊管理。2004年,我開始接觸單眼相機,並在2008年正式成為一名接案攝影師,目前使用Canon系統進行拍攝。2016年,我愛上了美麗的水草缸,這讓我的生活多了另一層次的放鬆。每天在電腦前修圖時,能欣賞紅吱吱、綠油油的水草,彷彿多了一份平靜與愉悅。攝影與水草讓我的生活充滿了藝術與自然的交融。
連絡信箱:[email protected] (歡迎合作提案)
DORIGO IMAGE 攝影工作室:https://dorigo-image.com
如果你喜歡我的內容,可以用行動贊助我一杯咖啡☕,支持我持續創作,也讓這個網站可以繼續營運下去喔!

若您喜歡這篇文章,歡迎按讚分享喔!
2 回復
  1. Niall Chen
    Niall Chen says:

    您好喔,我將 backup.php 上傳至 cPanel 帳號的根目錄(非public_html),設定 cron job 後並沒有如預期中的執行備份,是不是有版本或是其他限制呢?

    我知道排程有啟動,只是沒有備份並沒有執行成功,因為 cPanel 預設 webmail 中有收到主旨為 "Cron php -q /home/myaccount/backup.php" 的信件,內容看不懂,如下:
    (上述 myhost 與 myaccount 為範例名稱)

    HTTP/1.1 301 Moved
    Connection: close
    Content-length: 141
    Location: /frontend/https:/backup/dofullbackup.html?submit=Generate
    Content-type: text/html; charset="utf-8"
    Cache-Control: no-cache, no-store, must-revalidate, private
    Pragma: no-cache

    回覆
    • 多力哥
      多力哥 says:

      您好,這角本目前我已沒在使用了。
      cPanel是租用的嗎?有些主機商會鎖一些指令,可以詢問對方工程師看看。
      另外大部分的主機商都已有提供每天備份的服務了。

      回覆

發表評論

想要留言嗎?
歡迎歡迎!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *