Linux VPS自动备份:脚本上传FTP及RSYNC增量备份

 

☆☆☆一、每日自动备份网站数据及数据库上传FTP☆☆☆

 

这个方式,主要是一个脚本(包含压缩网站数据及数据库,上传),然后用cron命令每天在指定时间段运行,下面请看脚本代码(脚本内信息需自行设定)

 

 代码如下 复制代码

#!/bin/bash
#以下信息请自行修改

MYSQL_USER=root                    #mysql用户名
MYSQL_PASS=123456                      #mysql密码
MAIL_TO=admin@zrblog.net                 #数据库发送到的邮箱
FTP_USER=zrblog                              #ftp用户名
FTP_PASS=123456                        #ftp密码
FTP_IP=*.*.*.*                          #ftp地址
FTP_backup=zrblog-backup                          #ftp上存放备份文件的目录,这个要自己得ftp上面建的
WEB_DATA=/home/wwwroot           #要备份的网站数据
#以上信息自行修改

#定义数据库的名字和旧数据库的名字
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天前的数据
rm -rf /home/backup/Data_$(date -d -3day +”%Y%m%d”).tar.gz /home/backup/Web_$(date -d -3day +”%Y%m%d”).tar.gz
cd /home/backup
#导出数据库,一个数据库一个压缩文件
for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e ‘SHOW DATABASES’ | xargs`; do
(/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 – > ${db}.sql.gz)
done
#压缩数据库文件为一个文件
tar zcf /home/backup/$DataBakName /home/backup/*.sql.gz
rm -rf /home/backup/*.sql.gz
#发送数据库到Email,如果数据库压缩后太大,请注释这行
#echo “主题:数据库备份” | mutt -a /home/backup/$DataBakName -s “内容:数据库备份” $MAIL_TO
#压缩网站数据
tar zcf /home/backup/$WebBakName $WEB_DATA
#上传到FTP空间,删除FTP空间5天前的数据
ftp -v -n $FTP_IP << END
user $FTP_USER $FTP_PASS
type binary
cd $FTP_backup
delete $OldData
delete $OldWeb
put $DataBakName
put $WebBakName
bye
END

 

将以上脚本按照您的VPS信息设定后,存为AutoBackupToFtp.sh,然后上传至VPS的root目录下。

 

请确保您的VPS能正常发信,否则请安装(yum install sendmail mutt),然后,给脚本赋予权限

 

 代码如下 复制代码

chmod +x /root/AutoBackupToFtp.sh

 

接下来我们可以测试下这个脚本是否正常工作,ssh登陆手动运行脚本,查看相关FTP位置是否收到数据。如果一切正常,我们再用cron实现每日自动运行这个脚本

 

 代码如下 复制代码

crontab –e

 

添加以下任务

 

 代码如下 复制代码

00 03 * * * /root/AutoBackupToFtp.sh

 

任务的时间请自行设定,比如上面代码中的00 03,就是3点,尽量选择您网站访客最少的时间段,比如凌晨。

 

附脚本下载:http://www.zrblog.net/sh/AutoBackupToFtp.sh

 

【注意事项】如果运行脚本时提示backup文件夹不存在,或者不能建立,请手动在VPS的home目录下建立backup文件夹。

 

☆☆☆二、RSYNC增量备份☆☆☆

 

RSYNC增量备份,需要2台VPS,让他们之间做数据同步。比如,我们的网站放在VPS A,那么A就是服务器端;用另一台VPS B做增量备份,那么B就是客户端。

 

这里说的只是单纯的B为A备份,A与B均为linux相同系统。

 

首先下载服务器端和客户端配置文件:服务器端配置文件—-客户端配置文件

 

【服务器端设定】

 

首先,将下载回来的服务器端配置文件上传至VPS的/etc目录中,然后对相关文件修改设定(也可以先修改再上传)

 

①修改/etc/rsyncd/rsyncd.conf共5处

 

 代码如下 复制代码

1、address = 1.2.3.4    #第七行修改为服务器IP

2、hosts allow=4.3.2.1   #第二十行修改为客户端IP

3、[zrblog]     #第三十四行自定义命名

4、path = /home/wwwroot    #第三十五行修改同步目录

5、auth users = zrblog     #第三十八行指定用户名

 

②修改/etc/rsyncd/rsyncd.secrets用户及密码,并赋予权限(此用户及密码请自行指定)

 

 代码如下 复制代码
chmod 600 /etc/rsyncd/rsyncd.secrets
③在服务器上运行rsyns

 

 代码如下 复制代码
/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf

 

【客户端设定】

将下载的客户端配置文件上传至VPS的/root目录,然后对相关文件设定
①修改/root/pass文件,填入密码设定与服务器端一致,并赋予权限。

 

 代码如下 复制代码
chmod 600 /root/pass
②修改/root/rs.sh文件,设定rsync路径与服务器端一致,并赋予权限。

 

 代码如下 复制代码
rsync -avzP --delete  --password-file=/root/pass zrblog@1.2.3.4::zrblog /home/wwwroot
#上面第一个zrblog为服务器端/etc/rsyncd/rsyncd.secrets中用户名
#1.2.3.4为服务器端IP
#第二个zrblog为服务器端设定的自定义命名
#最后的/home/wwwroot为同步的网站目录
然后,设定权限

 

 代码如下 复制代码
chmod +x /root/rs.sh
完成以上设定后,请手动在客户端运行/root/rs.sh,检测是否正常同步成功。
补充一点,如果你使用了iptalbes,请注意rsync需要开放端口873,不然也是没法同步的。
若未能达到你想要的,就根据具体情况修缮。
最后,做一个计划任务,在客户端按时运行同步(使用crontab命令)。
相信,只要您使用了上面两种自动备份中的任何一种,都无疑为您的网站数据安全提供了一份有力的保障。

s

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, 文件
, 数据
, 备份
, 代码
data
linux命令大全、linux系统下载、linux操作系统、linux系统、ubuntu,以便于您获取更多的相关知识。

时间: 2025-01-19 18:51:15

Linux VPS自动备份:脚本上传FTP及RSYNC增量备份的相关文章

实现Linux中Mysql数据库自动备份并上传到远程FTP服务器

这篇文章很有分享价值,因为我们在实际的生产环境中需要将数据库进行自动备份,然后上传到指定的位置,当然也可以像以下文章中所讲的一样,上传到你指定的FTP服务器中,从而实现Mysql数据库自动备份并上传到远程FTP服务器的部署,在Linuxhttp://www.aliyun.com/zixun/aggregation/31093.html">技术交流群中,也有朋友会遇到这方面的问题,可以将此文分享给群友共益. 注意:任何的操作都会具有风险性,请在本机实际测试通过之后再部署到服务器环境,这样即熟

Linux下远程备份、上传工程,重启服务器

    Linux服务器实现远程,原项目的备份.删除,新项目上传,以及远程重启服务器! 分成一个主shell调用三个shell文件步骤完成. mainsh.sh一次按顺序执行多个脚本,将三步sh顺序完成: #!/bin/sh #此Shell一次按顺序执行多个脚本 #参数:: #远程jboss服务器所在的ip IP=127.0.0.1 #服务器登录账户 userx='tskk' #服务器登录密码 passx='sasa' #部署jboss远程服务器上项目war文件的全路径名称(用于备份) jbos

紧急求助:linux vsftpd虚拟用户能上传、下载文件,没有删除权限

问题描述 紧急求助:linux vsftpd虚拟用户能上传.下载文件,没有删除权限 SELinux设置为disable了,文件属主是virtural(virtual是虚拟用户所在的本地用户) 解决方案 写个脚本将文件扫描到就赋予所有权限呢 解决方案二: 把write_enable=yes前面的注释取消试试

自动预览上传图(图片预览)]

上传 自动预览上传图(图片预览)powered BY AIRZEN 2004/05/21 作者信息:Author:airzen QQ:39192170E-mail:airzen@sohu.com 转贴请保留作者信息,谢谢 <input name="w_s" type="file" id="w_s" onChange="load_img(this.value,img_s);"><input name="

上传ftp出错 请帮忙-上传ftp出错,刚刚提问写错了,请帮忙

问题描述 上传ftp出错,刚刚提问写错了,请帮忙 strm = reqFTP.GetRequestStream(); strm.Write(buff, 0, buff.Length); strm.Dispose(); strm.Close(); 到了strm.Dispose();时就报错: The remote server returned an error: (550) File unavailable (e.g., file not found, no access). 解决方案 You

Linux VPS自动定时备份MySQL数据库发送至邮箱实现脚本

如今,我们在选择主机建站或者部署项目的时候,越发觉得VPS.服务器性价比会高很多,比如我们经常有看到年付十几美金.二十几美金的VPS服务器.相比较传统的虚拟主机是便宜很多,不过老蒋一直强调,如果我们是普通的个人博客.个人网站,如果虚拟主机能够满足需求的,建议还是要使用虚拟主机.因为虚拟主机站长维护成本较低,而且稳定性和安全性比VPS.服务器强一些. 因为,大部分VPS服务器都是无管理型的,所有的环境配置.网站部署.数据安全都需要我们自己来运维.尤其对于很多Linux服务器新手用户,老蒋遇到很多选

Linux VPS 自动备份数据到远程主机FTP的方法_Linux

备份的数据如果不是特别大的话,不建议压缩,防止其中可能会有已经被多次压缩过的文件损坏. 备份数据库的方式为停止MYSQL服务后备份DATA目录,期间MYSQL会中止数秒至数十秒.请自行权衡利弊. 如果系统上没有ftp命令,先执行yum install -y ftp进行安装. 需要先建立/home/backup/目录,该目录不能用作其他用途. 复制代码 代码如下: #!/bin/bash #FTP信息 FTP_IP= FTP_USER= FTP_PASS= #备份数据库 /etc/init.d/m

linux系统怎么用SecureCRT上传和下载文件?

  1.需要上传或者下载,需要使用rz和sz命令.如果linux上没有这两个命令工具,则需要先安装.可以使用yum安装.运行命令yum install lrzsz. 2.安装完成后就可以使用rz命令上传本地的文件到linux平台.运行rz命令,会弹出选择文件的对话框. 3.选择需要上传的文件所在的文件夹,然后点击文件.然后再点击添加按钮,"发送的文件"框中就会显示需要上传的文件.点击确定按钮,就能完成上传. 4.如果需要下载linux上的文件,使用sz命令.sz加上文件完整路径,比如:

MYSQL备份:启用二进制日志功能的MYSQL增量备份

小量的数据库我们可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,我们就不太可能每天进行一次完整备份了,而且改成每周一次完整备份,每天一次增量备份类似这样的备份策略.增量备份的原理就是使用了mysql的二进制日志,所以我们必须启用二进制日志功能. 一.增量备份 1.比如我们在星期天下午11点做一次完整备份: mysqldump --single-transaction --flush-logs --master-data=2 --all-databases > fullbackup