主机内部和主机之间的数据备份和转移是我们最长做的事情了,如果有web server那么可以 直接 wget http://www./x.zip即可,如果有ftp server时,可以使用ftp命令上传下载,如果二者都没有的话,scp命令就有用武之地了。
scp命令基本格式
常用参数
常用方法
执行后,系统会要求输入远程SSH的登录密码(ps:上面命令中,远程用户名@,可以省略,这样执行后系统就是要求输入用户名和密码),同样可以使用密匙对的方式登录,方法参照Windows下Puty SSH公钥验证实现免密码登陆详细图文教程 将生成的公钥id_rsa.pub改名为authorized_keys,并上传到远程服务器的~/.ssh/下,私钥留着本地服务器。这样在执行上面命令后,就不需要密码了 定时备份方法 在建立密匙对方式登录后,我们可以在脚本中利用scp命令进行备份,利用crontab来定时执行
====================================================================================== ==========================================bash============================================ ====================================================================================== 网站数据是一个网站的最重要的一部分,因为保护好我们的网站数据成为建站规划的首要任务。godaddy的名费空间由于一个超大的广告,很少有人用来做站,不过我们可以把网站数据上传到这个免费空间。 1、登录SSH,创建文件backup.sh vi /root/backup.sh 2、粘贴以下代码到backup.sh,并保存。 #!/bin/bash 3、为backup.sh添加执行权限。 chmod +x /root/backup.sh 添加脚本至crontab(自动启动程序) 执行命令crontab -e,添加每天0点10分启动代码 10 00 * * * /root/backup.sh 测试脚本 执行脚本backup.sh ./backup.sh 稍等片刻,登录godaddy免费空间的FTP,看是否已经成功上传了备份文件,如果存在,证明脚本已经设置正确。否则,认真检查FTP信息是否设置正确。 这个脚本可以设置删除多少天前的数据,所以就不用担心免费空间的容量不足的问题。 转载请标明文章来源:《http://www./2011/03/vps-auto-backup-godaddy/》 ====== ===================================================================================================
文章开始之前,先问下各位站长一个问题:什么东西对于站长是十分重要的?其实对于站长而言,很多东西都是很重要的。但我们现在排除外在因素,把范围缩小到网站系统本身,哪些是非常重要的呢?网站数据就是其中之一了。 网站数据包括程序文件本身、网站运行过程中不断产生的附件数据(图片、文档、视频等)以及数据库文件,三大块总括为网站数据。 以自己为例,在这两年多的站长经历来看,最让我痛苦的就是某一天起床,一直苦心经营的网站打不开了,检查过DNS也正常,最后询问空间运营商发生什么事了,获知的结果系:服务器硬盘损坏,所有数据无法恢复(在这备注下:一般小站长买的机器或者空间都很低配置的,所以别想有什么数据备份服务,要就加钱买),结果就是一阵阵的失落。如果网站刚上线运行不久就发生这样的事或者还不会那么心痛,从头再来也不难。假如是一个运行若干年的网站,突然发生这么一次意外就可以说是重重一击。 刚成为站长的前几个月,我对数据备份这个事情压根没考虑过,直到有一天在群里看到有位群友痛心的经历——网站彻底崩溃,数据全没!!那是经营了3年多的一个老站,就么倒下了,真是闻者伤心听者落泪(有点夸张了)。 我看到了这样活生生的样板,不做数据备份的后果很严重。所以我现在总结出一个经验:如果真要用心做一个网站,就一定要做好数据备份工作,而且最好能异地备份,有些朋友以为在机器本地做了备份就乐了,放心了,那就大错。对于备份数据,又要面临一个实际的问题:每次都自己上服务器把相关的数据打包,然后再用FTP下载回来吗?这样时间长了就会累,所以今天就以Linux(Centos 5.5)环境讲讲如何实现全自动远程(异地)对全站数据进行备份。 要实现自动远程备份功能需要的关软件有:服务器(本地环境)要安装lftp,远程端要开启FTP服务,对登录的目录有读写权限,具备以上2个条件即可。 如果机器上没有安装lftp这个工具,可以通过以下命令完成: #yum install lftp 假设把相关的脚本文件存放在/apps/script目录下 #vi /apps/script/autobackup.sh //输入以下内容 #!/bin/bash #author: www. echo 'backup job start' #设置要备份的网站目录,即是网站的根目录 file=/apps/wwwdata #设置本地备份目录,用于存放打包后的文件 backpath=/apps/bkdata/ dbuser=数据库用户名 #数据密码,要记得用单引号将把整个密码引起来,如果密码中有单引号就用双引号,嘿嘿 dbpwd='数据库密码' dbname=数据库名称 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 #执行数据库备份,/apps/mysql/bin/mysqldump修改为你实际环境的路径 /apps/mysql/bin/mysqldump -u $dbuser -p$dbpwd $dbname > ${sqlfp} #对备份之后的数据库文件压缩,或者在数据库备份时通过加入参数直接进行压缩 tar zcf $backpath${bkdate}/$sqlfile_gz -C ${backpath}${bkdate} ${sqlfile_sql} #删除未压缩SQL的文件 rm -f ${sqlfp} #生成的文件名格式:web_网站目录名_20130419.tar.gz fn=web_${file##*/}_${bkdate}.tar.gz tar zcf $backpath${bkdate}/$fn -C ${file%/*} ${file##*/} #以下操作为FTP自动连接并把本地文件上传到异地服务器上 /usr/bin/lftp ${domain} << END user ${user} ${userpwd} lcd ${backpath} mirror -R ${bkdate} exit END echo 'backup job done' ------------分隔线-------------- 保存退出之后,为该脚本增加执行权限 #chmod +x /apps/script/autobackup.sh #crontab –e //添加定时任务,根据具体需求设定备份间隔 #0 4 1,16 * * /apps/script/autobackup.sh 我设定为每月的1日,16日的零辰4点钟执行备份任务。最好不要在大白天做这些操作,因为会让整个系统明显变慢的。 经过以上配置,站长们就不用再愁数据备份的烦恼了,可以说是一劳永逸。以上仅为个人实际应用写,跟其各自的需求可能不大一样,但本质不变,只要稍作修改即可,如果有其它疑问欢迎大家留言交流学习。 |
|