2014-01-29 59 views
1

我是shell腳本的全新用戶,並且一直在尋找關於如何爲我的網站創建備份腳本的示例,但我無法找到某些東西或至少是我理解的東西。用於自動備份網站的Bash/Shell腳本

我有一臺Synology Diskstation服務器,我想用它自動(通過其調度程序)對我的網站進行備份。

我目前正在通過我的Mac上的Automator與傳輸FTP程序一起做到這一點,但使這個命令行過程是我奮鬥的地方。

這就是我正在尋找一個腳本來完成:

1)沒有瀏覽器打開一個URL(該URL在服務器上創建數據庫的一個MySQL轉儲稍後下載)。示例url將爲http://mywebsite.com/dump.php

2)使用FTP從服務器下載所有文件。 (目前傳輸FTP將其作爲同步功能來處理,並且只會在遠程文件日期比本地文件更新的情況下下載文件,並且還會刪除遠程服務器上不存在的任何本地文件)。

3)第2步創建的文件的壓縮歸檔,命名爲website_CURRENT-DATE

4)從步驟3將歸檔到一個特定的文件夾,並在這年齡超過120天這個特定的文件夾中刪除任何文件。

現在我不知道如何做第1步或第2步中的同步(我看我怎麼可以使用wget下載整個網站,但似乎它會在每次運行時下載所有內容,即使它沒有改變)。

步驟3和4可能是輕鬆地通過搜索找到,但我沒有搜索的結果還沒有,因爲我不能讓過去的第1步

謝謝!

此外,我的網絡主機不做這些類型的備份,所以這就是爲什麼我喜歡做我自己的。

+0

對於1,請檢查'curl'。 – fedorqui

+0

您是否正在使用PHP腳本執行此操作?執行批處理腳本或某種其他腳本語言可能更容易。 – MRC

+0

外部託管網站是否真的是您的主副本?我想你會在自己的個人電腦或服務器上開發你的主人,然後在你做出可發佈的更改時偶爾推送。然後你在本地備份你的開發系統。 – lurker

回答

0

回答您的每一個問題,以便,則:

  1. 幾個選項,其中最常見的將是wget http://mywebsite.com/dump.phpcurl http://mywebsite.com/dump.php之一。

  2. 既然你有ssh訪問服務器,你可以很容易使用rsync搶在磁盤上使用電子文件的快照。 G。 rsync -essh --delete --stats -zav [email protected]:/path/to/files/ /path/to/local/backup

  3. 一旦你從rsync快照,你可以做一個壓縮包,過時副本cd /path/to/local/backup; tar cvf /path/to/archives/website-$(date +%Y-%m-%d).tgz *

  4. find /path/to/archives -mtime +120 -type f -exec rm -f '{}' \;將刪除超過120天以上的所有備份。

+0

1)二手卷曲...工作正常! 2)無法使用rsync,因爲網絡主機已禁用(端口被拒絕)。我沒有問過它是否可以打開,所以現在我正在測試wget的鏡像功能......當然,它必須下載整個站點。 3和4看起來很容易......所以我認爲我已經設定好了。非常感謝。如有其他人在此絆倒,我會報告回來! – Jbs

+0

僅供參考:如果您無法獲得'rsync',您可能可以通過'scp -r'獲得,但不會顯示已刪除的文件,也不會顯示FTP。 – DopeGhoti

+0

我的虛擬主機不允許使用SSH(之前當我說我做了......我的意思是我的本地synology服務器)。這是否意味着我沒有選擇進行增量同步/在本地鏡像站點,如果不在主機上,則刪除本地文件? – Jbs