使用Rsync自动实现网站增量备份
使用Rsync自动实现网站增量备份
MoeWah 已经在网站上发布了多篇备份相关的文章,希望大家在其中已经获得了自己想要的东西,现在,MoWah再补充一下Rsync备份的相关内容,提到Rsync,很多熟识Linux的朋友都不会陌生,很多Linux的镜像都是采用这种方式进行同步的。网络上更是有很多人采用了Rsync配合DNS,为网站架设多个镜像站点的案例。本文仅粗浅的介绍一个使用Rsync进行网站备份的方法,也欢迎大家补充更多内容。
首先,我们假定网站所在的服务器为A服务器,备份服务器为B服务器。安装rsync的方法就不说了,Linux直接yum/apt-get install rsync
就可以了
1.用ssh-key-gen命令在A服务器上创建公钥和密钥(目的是免密码登录B服务器)
ssh-keygen -t rsa
2.在A服务器上运行 ssh-copy-id
命令把公钥复制到B服务器(.ssh/authorized_key)上,期间需要输入B服务器的密码
ssh-copy-id -i ~/.ssh/id_rsa.pub root@B服务器的ip
如果出现形如如下错误
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xxxxxxxx
Please contact your system administrator.
Add correct host key in /home/conbar/.ssh/known_hosts to get rid of this message.
Offending key in /home/conbar/.ssh/known_hosts:10
RSA host key for xxxxxx has changed and you have requested strict checking.
Host key verification failed.
在A服务器下运行如下命令
ssh-keygen -R B服务器的ip
3.在A服务器上尝试登录B服务器
ssh B服务器ip
如果成功就没问题了
4.A服务器建立备份脚本(本文示例是在/root下建立了backup.sh文件):
示例1(先打包再同步):
#!/bin/bash
echo "Now packing your database..."
mysqldump -uroot -p数据库密码 数据库名称> backup.sql
echo "Now your files..."
tar zcvfP backup.tar.gz 网站目录(如/home/wwwroot)
echo "rsync start..."
echo "Database file is under rsync..."
rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /root/backup.sql B服务器ip:/home/
echo "Now your files..."
rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /root/backup.tar.gz B服务器ip:/home/
echo "Complete!"
示例2(直接同步网站目录,可实现增量备份):
#!/bin/bash
echo "Now packing your database..."
mysqldump -uroot -p数据库密码 数据库名称> backup.sql
echo "rsync start..."
echo "Database file is under rsync..."
rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /root/backup.sql B服务器ip:/home/
echo "Now your files..."
rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /home/wwwroot B服务器ip:/home/
echo "Complete!"
5.为备份脚本增加运行权限
chmod +x backup.sh
运行sh backup.sh进行备份尝试
6.设置crontab(crontab -e命令)进行定期备份(每周二、周四凌晨4点开始备份)
# m h dom mon dow command
0 4 * * 1,4 /bin/bash /root/backup.sh
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)