主機內(nèi)部和主機之間的數(shù)據(jù)備份和轉(zhuǎn)移是我們最長做的事情了,如果有web server那么可以 直接 wget http://www.xx.com/x.zip即可,如果有ftp server時,可以使用ftp命令上傳下載,如果二者都沒有的話,scp命令就有用武之地了。
scp簡介
scp是secure copy的簡寫,scp是linux系統(tǒng)下基于ssh登陸進行安全的遠程文件拷貝命令。和它類似的命令有cp,不過cp只是在本機進行拷貝不能跨服務(wù)器,而且scp傳輸是加密的
scp命令基本格式
1 | scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] |
2 | [-l limit] [-o ssh_option] [-P port] [-S program] |
3 | [[user@]host1:]file1 [...] [[user@]host2:]file2 |
常用參數(shù)
1 | -P #port 注意是大寫的P, SSH的端口號(默認22可以省略) |
2 | - v #用來顯示進度 . 可以用來查看連接 , 認證 , 或是配置錯誤 . |
3 | -C #允許壓縮 |
4 | -r #遞歸復(fù)制整個目錄 |
常用方法
1 | #從 本地服務(wù)器 復(fù)制到 遠程服務(wù)器 |
2 | #scp [可選參數(shù)] 本地文件/目錄 遠程用戶名@遠程地址:遠程文件/目錄 |
3 |
4 | #本地文件backup.zip發(fā)送到遠程backup目錄下 |
5 | scp /home/backup.zip root@ip:/home/others/backup |
6 |
7 | #本地文件backup.zip發(fā)送到遠程并改名為otherbackup.zip |
8 | scp /home/backup.zip root@ip:/home/others/otherbackup.zip |
9 |
10 | #將本地backup整個復(fù)制到遠程/home/others下 |
11 | scp -r /home/backup root@ip:/home/others |
12 |
13 | #從 遠程服務(wù)器 復(fù)制到 本地服務(wù)器 |
14 | #scp [可選參數(shù)] 遠程用戶名@遠程地址:遠程文件/目錄 本地文件/目錄 |
15 | #同理,只不過遠程的寫在前面 |
執(zhí)行后,系統(tǒng)會要求輸入遠程SSH的登錄密碼(ps:上面命令中,遠程用戶名@,可以省略,這樣執(zhí)行后系統(tǒng)就是要求輸入用戶名和密碼),同樣可以使用密匙對的方式登錄,方法參照Windows下Puty SSH公鑰驗證實現(xiàn)免密碼登陸詳細圖文教程
將生成的公鑰id_rsa.pub改名為authorized_keys,并上傳到遠程服務(wù)器的~/.ssh/下,私鑰留著本地服務(wù)器。這樣在執(zhí)行上面命令后,就不需要密碼了
定時備份方法
在建立密匙對方式登錄后,我們可以在腳本中利用scp命令進行備份,利用crontab來定時執(zhí)行
1 | #!/bin/sh |
2 | backpath=/backup/ #本地備份目錄 |
3 | date =` date +%y%m%d` |
4 | site=sitename |
5 | tar zcf ${backpath}${site} '-' ${ date }. tar .gz /var/html/www/${site} #壓縮網(wǎng)站數(shù)據(jù),并以網(wǎng)站名-時間方式命名 |
6 | scp ${backpath}${site} '-' ${ date }. tar .gz root@ip:/var/backup #上傳到遠程服務(wù)器/var/backup中 |
7 | find ${backpath} -mtime +30 - exec rm {} \; #刪除本地備份目錄超過30天前的數(shù)據(jù) |
======================================================================================
==========================================bash============================================
======================================================================================
網(wǎng)站數(shù)據(jù)是一個網(wǎng)站的最重要的一部分,因為保護好我們的網(wǎng)站數(shù)據(jù)成為建站規(guī)劃的首要任務(wù)。godaddy的名費空間由于一個超大的廣告,很少有人用來做站,不過我們可以把網(wǎng)站數(shù)據(jù)上傳到這個免費空間。
創(chuàng)建數(shù)據(jù)備份腳本
1、登錄SSH,創(chuàng)建文件backup.sh
vi /root/backup.sh
2、粘貼以下代碼到backup.sh,并保存。
注釋:/home/backup為本地服務(wù)器存放備份文件的目錄,可以自由更改。
DataBakName:數(shù)據(jù)庫文件名
WebBakName:網(wǎng)站數(shù)據(jù)文件名
OldData ?。何逄旌蟮淖詣觿h除的數(shù)據(jù)庫文件
OldWeb ?。何逄旌蟮淖詣觿h除的網(wǎng)站數(shù)據(jù)文件
#!/bin/bash
cd /home/backup
#定義數(shù)據(jù)庫的名字和舊數(shù)據(jù)庫的名字
DataBakName=Data_$(date +'%Y%m%d').tar.gz
WebBakName=Web_$(date +%Y%m%d).tar.gz
OldData=Data_$(date -d -5day +'%Y%m%d').tar.gz
OldWeb=Web_$(date -d -5day +'%Y%m%d').tar.gz
#刪除本地3天前的數(shù)據(jù)
rm -rf /home/backup/Data_$(date -d -3day +'%Y%m%d').tar.gz
#導(dǎo)出mysql數(shù)據(jù)庫
/usr/local/mysql/bin/mysqldump -u root -p123456 zhumaohai > /home/backup/zhumaohai.sql
#壓縮數(shù)據(jù)庫
tar zcf /home/backup/$DataBakName /home/backup/*.sql
#刪除sql文件
rm -rf /home/backup/*.sql
#壓縮網(wǎng)站數(shù)據(jù)
tar zcvf /home/backup/$WebBakName /home/wwwroot
#上傳到FTP空間,刪除FTP空間5天前的數(shù)據(jù)
ftp -v -n 8.8.8.8 << END
user gdftpuser 123456
type binary
cd backup
delete $OldData
delete $OldWeb
put $DataBakName
put $WebBakName
bye
END
3、為backup.sh添加執(zhí)行權(quán)限。
chmod +x /root/backup.sh
添加腳本至crontab(自動啟動程序)
執(zhí)行命令crontab -e,添加每天0點10分啟動代碼
10 00 * * * /root/backup.sh
測試腳本
執(zhí)行腳本backup.sh
./backup.sh
稍等片刻,登錄godaddy免費空間的FTP,看是否已經(jīng)成功上傳了備份文件,如果存在,證明腳本已經(jīng)設(shè)置正確。否則,認真檢查FTP信息是否設(shè)置正確。
這個腳本可以設(shè)置刪除多少天前的數(shù)據(jù),所以就不用擔(dān)心免費空間的容量不足的問題。
轉(zhuǎn)載請標(biāo)明文章來源:《http://www.centos.bz/2011/03/vps-auto-backup-godaddy/》
======
tar zcf ${site}.tar.gz /home/${site}
==================================網(wǎng)站sh===================================================
#!/bin/sh
backpath=/backup/ #本地備份目錄
date=`date +%y%m%d`
site=sitename
tar zcf ${backpath}${site}'-'${date}.tar.gz /home/${site} #壓縮網(wǎng)站數(shù)據(jù),并以網(wǎng)站名-時間方式命名
scp ${backpath}${site}'-'${date}.tar.gz root@ip:/var/backup #上傳到遠程服務(wù)器/var/backup中
find ${backpath} -mtime +30 -exec rm {} \; #刪除本地備份目錄超過30天前的數(shù)據(jù)
===================================================================================================
Linux(Centos)全自動異地備份數(shù)據(jù)(WEB+Mysql)
來源:我愛共享 作者:車仔 日期:2013-04-19 點擊次數(shù) 88
文章開始之前,先問下各位站長一個問題:什么東西對于站長是十分重要的?其實對于站長而言,很多東西都是很重要的。但我們現(xiàn)在排除外在因素,把范圍縮小到網(wǎng)站系統(tǒng)本身,哪些是非常重要的呢?網(wǎng)站數(shù)據(jù)就是其中之一了。
網(wǎng)站數(shù)據(jù)包括程序文件本身、網(wǎng)站運行過程中不斷產(chǎn)生的附件數(shù)據(jù)(圖片、文檔、視頻等)以及數(shù)據(jù)庫文件,三大塊總括為網(wǎng)站數(shù)據(jù)。
以自己為例,在這兩年多的站長經(jīng)歷來看,最讓我痛苦的就是某一天起床,一直苦心經(jīng)營的網(wǎng)站打不開了,檢查過DNS也正常,最后詢問空間運營商發(fā)生什么事了,獲知的結(jié)果系:服務(wù)器硬盤損壞,所有數(shù)據(jù)無法恢復(fù)(在這備注下:一般小站長買的機器或者空間都很低配置的,所以別想有什么數(shù)據(jù)備份服務(wù),要就加錢買),結(jié)果就是一陣陣的失落。如果網(wǎng)站剛上線運行不久就發(fā)生這樣的事或者還不會那么心痛,從頭再來也不難。假如是一個運行若干年的網(wǎng)站,突然發(fā)生這么一次意外就可以說是重重一擊。
剛成為站長的前幾個月,我對數(shù)據(jù)備份這個事情壓根沒考慮過,直到有一天在群里看到有位群友痛心的經(jīng)歷——網(wǎng)站徹底崩潰,數(shù)據(jù)全沒??!那是經(jīng)營了3年多的一個老站,就么倒下了,真是聞?wù)邆穆犝呗錅I(有點夸張了)。
我看到了這樣活生生的樣板,不做數(shù)據(jù)備份的后果很嚴(yán)重。所以我現(xiàn)在總結(jié)出一個經(jīng)驗:如果真要用心做一個網(wǎng)站,就一定要做好數(shù)據(jù)備份工作,而且最好能異地備份,有些朋友以為在機器本地做了備份就樂了,放心了,那就大錯。對于備份數(shù)據(jù),又要面臨一個實際的問題:每次都自己上服務(wù)器把相關(guān)的數(shù)據(jù)打包,然后再用FTP下載回來嗎?這樣時間長了就會累,所以今天就以Linux(Centos 5.5)環(huán)境講講如何實現(xiàn)全自動遠程(異地)對全站數(shù)據(jù)進行備份。
要實現(xiàn)自動遠程備份功能需要的關(guān)軟件有:服務(wù)器(本地環(huán)境)要安裝lftp,遠程端要開啟FTP服務(wù),對登錄的目錄有讀寫權(quán)限,具備以上2個條件即可。
如果機器上沒有安裝lftp這個工具,可以通過以下命令完成:
#yum install lftp
假設(shè)把相關(guān)的腳本文件存放在/apps/script目錄下
#vi /apps/script/autobackup.sh //輸入以下內(nèi)容
#!/bin/bash
#author: www.5ishare.com
echo 'backup job start'
#設(shè)置要備份的網(wǎng)站目錄,即是網(wǎng)站的根目錄
file=/apps/wwwdata
#設(shè)置本地備份目錄,用于存放打包后的文件
backpath=/apps/bkdata/
dbuser=數(shù)據(jù)庫用戶名
#數(shù)據(jù)密碼,要記得用單引號將把整個密碼引起來,如果密碼中有單引號就用雙引號,嘿嘿
dbpwd='數(shù)據(jù)庫密碼'
dbname=數(shù)據(jù)庫名稱
domain=遠程端的域名或者IP地址
user=FTP用戶名
userpwd='FTP用戶密碼'
bkdate=$(date +%Y%m%d)
sqlfile_sql=${dbname}_${bkdate}.sql
sqlfile_gz=${dbname}_${bkdate}.tar.gz
sqlfp=${backpath}${bkdate}/$sqlfile_sql
if [ -e $backpath${bkdate} ]
then
echo $backpath is exists.
else
mkdir -p $backpath${bkdate}
fi
#執(zhí)行數(shù)據(jù)庫備份,/apps/mysql/bin/mysqldump修改為你實際環(huán)境的路徑
/apps/mysql/bin/mysqldump -u $dbuser -p$dbpwd $dbname > ${sqlfp}
#對備份之后的數(shù)據(jù)庫文件壓縮,或者在數(shù)據(jù)庫備份時通過加入?yún)?shù)直接進行壓縮
tar zcf $backpath${bkdate}/$sqlfile_gz -C ${backpath}${bkdate} ${sqlfile_sql}
#刪除未壓縮SQL的文件
rm -f ${sqlfp}
#生成的文件名格式:web_網(wǎng)站目錄名_20130419.tar.gz
fn=web_${file##*/}_${bkdate}.tar.gz
tar zcf $backpath${bkdate}/$fn -C ${file%/*} ${file##*/}
#以下操作為FTP自動連接并把本地文件上傳到異地服務(wù)器上
/usr/bin/lftp ${domain} << END
user ${user} ${userpwd}
lcd ${backpath}
mirror -R ${bkdate}
exit
END
echo 'backup job done'
------------分隔線--------------
保存退出之后,為該腳本增加執(zhí)行權(quán)限
#chmod +x /apps/script/autobackup.sh
#crontab –e //添加定時任務(wù),根據(jù)具體需求設(shè)定備份間隔
#0 4 1,16 * * /apps/script/autobackup.sh
我設(shè)定為每月的1日,16日的零辰4點鐘執(zhí)行備份任務(wù)。最好不要在大白天做這些操作,因為會讓整個系統(tǒng)明顯變慢的。
經(jīng)過以上配置,站長們就不用再愁數(shù)據(jù)備份的煩惱了,可以說是一勞永逸。以上僅為個人實際應(yīng)用寫,跟其各自的需求可能不大一樣,但本質(zhì)不變,只要稍作修改即可,如果有其它疑問歡迎大家留言交流學(xué)習(xí)。
本文地址:http://www.5ishare.com/tech/system/368842.shtml