Linux 每日备份到第二台伺服器教学! 含安装ftp server、crontab、备份脚本

一直以来都想要有一个完美的网站备份的规划,毕竟手动备份真的无法很勤劳的定时去备份。目前比较好的网站备份规划,就是租一台大硬碟伺服器( VPS或实体主机),在里面安装ftp server,然后透过备份脚本,让他自动每日帮你备份。

  • 主机环境: Linux Centos
  • 网站环境军哥lnmp一键安装包(安装教学:)

一、在备份伺服器中,安装vsftpd、Iftp。

要把需要备份的资料上传到备份到服器中,一定要安装FTP server。在这边我们用比较热门的vsftpd软体套件。

1、vsftpd安装指令:

1.yum -y install vsftpd 
2.touch / etc / vsftpd / chroot_list 
3.chkconfig vsftpd on

二、安装完vsftpd后,开启port 21。这样才不会造成登入FTP,被防火墙挡在外面,造成登入失败。

1.iptables -A INPUT -m state -state NEW -m tcp -p tcp -dport 21 -j ACCEPT 
2.service iptables save

三、开启vsftpd

服务vsftpd启动

四、安装Iftp

yum install lftp

2、新增FTP使用者

新增使用者名称(蓝色字体表示你想要新增的使用者名称,可自行设定)

useradd xxxx

更改使用者的密码(红色字体是你刚刚新增的使用者名称)

userwd xxxx

之后会有这行指令,这边你只需要输入你要的密码即可。为了安全因素,在SSH中你输入任何资料,都不会显示。

更改用户xxxx的密码。
新密码:

3.在网站伺服器中,上传备份脚本!

如果你是使用军哥lnmp一键包,那备份脚本在/root/lnmp1.2-full/tools中。

如果你没有备份脚本,我这边有军哥lnmp一键包中的备份脚本,我已经把注解都繁体化,依照你的伺服器需求,填入相关数值即可。

把备份脚本上传到随机目录即可,只要你知道备份脚本在哪个目录中就可以了。

军哥lnmp一键包备份脚本: Google云端下载

以下只需把蓝色字体的资料更改成你自己的即可

#!/斌/庆典

#Funciont:备份网站和mysql数据库
#Author:licess 
#Website:http ://lnmp.org

#IMPORTANT !!!请设置以下值!

Backup_Home= “/home/backup/” #你的网站伺服器端的备份目录
MySQL_Dump=” /usr/local/mysql/bin/mysqldump” 
######这边设定你要备份的网站目录### ### 
Backup_Dir=( “/home/wwwroot/xxxx.com” “/home/wwwroot/xxxx.com” ) #这边设定你要备份的网站目录

######你需要备份的资料库(输入资料库名称即可)###### 
Backup_Database=(“ xxxx “)

######~Set MySQL UserName and password~###### 
MYSQL_UserName=’ 资料库帐号 ‘ 
MYSQL_PassWord=’ 资料库密码 ‘

######启动FTP备份###### 
Enable_FTP=0 
# 0=启动; 1=不启动
######输入你的FTP资料###### 
FTP_Host=’ 127.0.0.1 :21 ‘ 
FTP_Username=’ 你的FTP帐号 ‘ 
FTP_Password=’ 你的FTP密码 ‘ 
FTP_Dir=” 你想要把备份资料在FTP的哪个目录? ”

#Values设置END!

TodayWWWBackup = www – * – $(date +“%Y%m%d”)。tar.gz 
TodayDBBackup = db – * – $(date +“%Y%m%d”)。sql 
OldWWWBackup = www – * – $(date -d -3day +“%Y%m%d”)。tar.gz 
OldDBBackup = db – * – $(date -d -3day +“%Y%m%d”)。sql

Backup_Dir()

Backup_Path = $ 1 
Dir_Name =`echo $ {Backup_Path ## * /}` 
Pre_Dir =`echo $ {Backup_Path} | sed’s /’$ {Dir_Name}’// g’`tar 
zcf $ {Backup_Home} www – $ {Dir_Name} – $(日期+“%Y%m%d”)。tar.gz -C $ {Pre_Dir} $ {Dir_Name} 

Backup_Sql()

$ {MySQL_Dump} -u $ MYSQL_UserName -p $ MYSQL_PassWord $ 1> $ {Backup_Home} db- $ 1 – $(date +“%Y%m%d”)。sql 
}

如果[!-f $ {MySQL_Dump}]; 然后
回显“找不到mysqldump命令。请检查你的设置。” 
退出1 
fi

如果[!-d $ {Backup_Home}]; 然后
mkdir -p $ {Backup_Home} 
fi

输入lftp> / dev / null 2>&1 || 找不到{echo>&2“lftp命令。安装:centos:yum install lftp,debian / ubuntu:apt-get install lftp。“; }

回声“备份网站文件……” 
为DD在$ {BACKUP_DIR [@]};做
BACKUP_DIR $ {} DD 
做过

回声“备份数据库……” 
对于DB在$ {Backup_Database [@]};做
Backup_Sql $ {}分贝
做过

echo“删除旧备份文件…” 
rm -f $ {Backup_Home} $ {OldWWWBackup} 
rm -f $ {Backup_Home} $ {OldDBBackup}

如果[$ {Enable_FTP} = 0]; 然后
回显“将备份文件上传到ftp …” 
cd $ {Backup_Home} 
lftp $ {FTP_Host} -u $ {FTP_Username},$ {FTP_Password} << EOF 
cd $ {FTP_Dir} 
mrm $ {OldWWWBackup} 
mrm $ {OldDBBackup} 
mput $ {TodayWWWBackup} 
mput $ {TodayDBBackup} 
bye 
EOF

回声“完整。” 
fi

4.测试备份脚本是否可执行

填完备份脚本的资料后,就要来执行是否你填的资料都正确!

 

目录切换至你放备份脚本的目录(蓝字为军哥lnmp备份脚本存放目录)

cd  /root/lnmp1.2-full/tools

执行你的备份脚本!

sh backup.sh

在这边如果他没有出现错误讯息,基本上就代表你备份脚本执行成功,这时候就去你的备份伺服器看看有没有网站的备份资料吧!

如果有错误讯息,可能是你资料填写有误或是防火墙有挡道,建议先关闭Linux防火墙再试试看。

5.安装crontab,让你伺服器定时执行备份脚本!

crontab是一个能让你定时处理某件事情的软体,所以我们就用这套软体,来让我们每天都自动执行一次我们的备份脚本!

事不宜迟,来安装吧!

yum install vixie-cron crontabs

设定开机自动开启crontab

chkconfig crond on

开启crontab

服务crond开始

加入crontab定时任务( 已每日凌晨3点执行为例,需要详细时间设定教学可看: 点我)

crontab -e

之后在按〈i〉进入编辑模式,输入以下资料(蓝字为军哥lnmp备份脚本存放目录)

0 3 * * * /root/lnmp1.2-full/tools

输入完毕后,按下键盘的《ESC》,之后再输入〈:wq〉再按下键盘的《Enter》,这样你的crontab就设定完成了!

为了确定你有成功输入crontab的定时任务,你可以输入

crontab -l

这个指令来观看你的crontab的任务列表, 如果什么资料都没出现,代表你刚刚没有新增到crontab,再去重新把步骤五重新做一次吧!

 

如果以上都非常顺利完成,那就代表你完成啰!

未经允许不得转载:技术啦 - 关注IT,建站和运维,分享最新教程,资源 » Linux 每日备份到第二台伺服器教学! 含安装ftp server、crontab、备份脚本

赞 (0) 打赏

评论 0

评论前必须登录!

登陆 注册