Linux下利用七牛雲和crontab實現定時自動備份
linux自帶crontab定時任務
mysql自帶mysqldump
系統自帶壓縮工具
然後參考以下兩篇文章:
簡介
qrsync 是一個根據七牛雲端儲存API實現的簡易命令列輔助上傳同步工具,支援斷點續上傳,增量同步,它可將使用者本地的某目錄的檔案同步到七牛雲端儲存中,同步或上傳幾百GB甚至上TB的檔案毫無鴨梨。
注意:被同步的檔名和路徑必須是utf8編碼,非utf8的檔名和路徑將會同步失敗
下載
qrsync 命令列輔助同步工具下載地址:
用法
先建立一個配置檔案,比如叫 conf.json,內容大體如下:
{
"access_key": "Please apply your access key here" ,
"secret_key": "Dont send your secret key to anyone",
"bucket": "Bucket name on qiniu resource storage",
"sync_dir": "Local directory to upload",
"async_ops": "fop1;fop2;fopN",
"debug_level": 1
}
配置檔案語法可以參考 JSON 。
其中,access_key
和 secret_key
在七牛雲端儲存平臺上申請。步驟如下:
bucket
是你在七牛雲端儲存上希望儲存資料的 Bucket 名(類似於資料庫的表),這個自己選擇一個合適的就可以,要求是隻能由字母、數字、下劃線等組成。
sync_dir
是本地需要上傳的目錄,絕對路徑完整表示。這個目錄中的所有內容會被同步到指定的 bucket
上。注意:Windows
平臺上路徑的表示格式為:碟符:/目錄
,比如 E 盤下的目錄 data 表示為:e:/data
。
async_ops
是設定上傳預轉引數,一般上傳的音視訊如果需要轉碼,可以使用該引數。詳情參考:音視訊上傳預轉
- asyncOps
可以在 七牛雲端儲存開發者網站後臺 進行相應的域名繫結操作,域名繫結成功後,若您將 bucket 設為公用(public)屬性,則可以用如下方式對上傳的檔案進行訪問:
http://<繫結域名>/<key>
key
即是 sync_dir
裡邊檔名或檔案的相對路徑,key
可以包含斜槓但不能以斜槓開頭。比如sync_dir
存在檔案 a.txt
和 a/b/c.txt
,且繫結的域名為 foo.qiniudn.com
,那麼即可用如下路徑訪問:
http://foo.qiniudn.com/a.txt
http://foo.qiniudn.com/a/b/c.txt
在建立完 conf.json 配置檔案後,就可以執行 qrsync 程式進行同步。
Unix/Linux/MacOS 系統可以用如下命令列:
$ qrsync /path/to/your-conf.json
以上命令會將 sync_dir
目錄中所有的檔案包括軟連結全部同步到 conf.json
配置檔案指定的 bucket
中。也可以通過加上 -skipsym
選項來忽略軟連結。
$ qrsync -skipsym /path/to/your-conf.json
Windows 系統使用者在 [開始] 選單欄選擇 [執行] 輸入 cmd
回車即可開啟
DOS 命令列視窗,然後切換到 qrsync.exe 的所在磁碟路徑。假設你的 qrsync.exe 存放在 d:/tools/qrsync.exe
,那麼如下幾行命令可以切換到
qrsync.exe 存放的目錄:
> d:
> cd tools
進入到 qrsync.exe 所在目錄後執行如下命令即可:
> qrsync.exe /path/to/your-conf.json
需要注意的是,qrsync 是增量同步的,如果你上一次同步成功後修改了部分檔案,那麼再次執行 qrsync 時只同步新增的和被修改的檔案。當然,如果上一次同步過程出錯了,也可以重新執行 qrsync 程式繼續同步。
==============================================================================CentOS下自動備份網站和資料庫的指令碼
接觸CentOS已經有幾個月的時間了,使用了太久的windows在剛接觸linux命令列介面的時候還真有點不太適應,但到最後也就應了大家的那句話,跟linux接觸的時候越長,就越為她的簡潔高效而折服,我手上有一臺伺服器安裝的作業系統是CentOS5.4,上面部署的有網站和資料庫應用,基本構架:centos+nginx+mysql+php,但由於網站資料比較多,自己手動備份的話太費時間,所以就打算做一個自動執行的指令碼,幫助我在每週的指定時間備份網站內容和資料庫內容,用tar打包,然後再傳到我另外一個ftp伺服器上,整個備份過程就完成了。
假定這臺伺服器的網站目錄為:/home/www,資料庫程式路徑為:/usr/local/mysql/bin,資料庫名為:levil,ftp伺服器為:ftphost,下面先來看完整的自動備份指令碼(自動備份指令碼儲存位置為:/home/backup.sh):
#!/bin/bash
cd /home
WebBakName=web_$(date +%y%m%d).tar.gz
tar zcvf $WebBakName www
SqlBakName=sql_$(date +%y%m%d).tar.gz
/usr/local/mysql/bin/mysqldump -uusername -ppassword levil>backup.sql
tar zcvf $SqlBakName backup.sql
ftp -nv ftphost << EOF
user ftpname ftppass
put $WebBakName
put $SqlBakName
quit
EOF
rm -f backup.sql $WebBakName $SqlBakName
下面來給大家一一講解:首先進入/home目錄,定義WebBakName變數為網站備份的檔名,檔名格式為web_日期.tar.gz,定義SqlBakName變數為資料庫備份的檔名,檔名格式為sql_日期.tar.gz,把整個網站目錄www打包到WebBakName檔名中,使用mysqldump匯出指定資料庫內容到backup.sql,然後把資料庫備份打包到SqlBakName檔案中,本機備份工作至此結束,如果你沒有足夠大的遠端ftp空間的話,可以直接把備份檔案下載到本機,但我還是建議直接備份到另外一個伺服器上的ftp空間中,做到完全自動化備份,這時你需要把指令碼中的ftphost、ftpname和ftppass分別替換成你的ftp資訊,整個備份過程就完成了。
接著輸入chmod +x backup.sh給指令碼新增執行許可權,再輸入:crontab -e編輯任務自動開始時間,比如我輸入:
00 05 * * 1 /home/backup.sh 就代表每週1的上午5點整執行該自動備份操作。
在這一切完成之後,你可以先把自動任務時間改為當前的接近時間,看自動備份指令碼是否工作正常,測試OK的話以後就不用擔心這臺伺服器出現任何問題導致資料丟失了,當然如果你的資料更新比較頻繁的話,建議把自動備份時間調整為每日。
思路:
用crontab定時備份檔案和資料庫。在之後的時間,比如二十分鐘之後,用crontab執行七牛qrsync上傳檔案。
具體還未測試。
留文記念。