Linux将FTP挂载为本地目录,并自动备份上传网站文件与数据库
前几天给服务器装了LNMP一键包作为运行环境,相比面板少了自动备份等功能,查到可以将FTP挂在为本地目录,就尝试了一下。
首先给服务器安装软件 curlftpfs
dnf -y install epel-release
# CentOS 的源里没有 curlftpfs,需要先安装 epel-release
dnf -y install curlftpfs
# 安装 curlftpfs
curlftpfs 192.168.1.1 /path -o user=username:password
# 挂载,path为挂载在本地的目录,username为FTP用户名,password为FTP密码
umount /path
# 取消挂载
创建需要用到的目录
mkdir /home/backup
#备份目录
mkdir /home/backup/ftp
#FTP挂载目录
mkdir /home/backup/local
#本地备份目录
mkdir /home/backup/local/database
#本地数据库文件备份目录
mkdir /home/backup/local/sitefile
#本地网站文件备份目录
curlftpfs 192.168.1.1 /home/backup/ftp -o user=username:password
#挂载FTP目录至本地,将192.168.1.1替换为Ftp服务器地址,username替换为FTP用户名,password替换为FTP密码
mkdir /home/backup/ftp/backup
#FTP备份目录
mkdir /home/backup/ftp/database
#FTP数据库文件备份目录
mkdir /home/backup/ftp/sitefile
#FTP网站文件备份目录
创建脚本文件/home/backup/backup.sh
内容如下
#!/bin/bash
nowDate=$(date +%Y%m%d_%H%M%S)
#用变量保存当前时间以便统一文件名中的时间
mysqldump -uUsername -pPassword Database | gzip > /home/backup/local/database/Db_cwlog_${nowDate}.sql.gz
#备份数据库,将Username替换为数据库用户名、Password替换为数据库密码、Database替换为数据库名
tar -zcPf /home/backup/local/sitefile/Site_cwlog_${nowDate}.tar.gz /home/wwwroot/cwlog.net
#打包网站目录
curlftpfs 192.168.1.1 /home/backup/ftp -o user=username:password
#挂载FTP目录至本地,将192.168.1.1替换为Ftp服务器地址,username替换为FTP用户名,password替换为FTP密码
cp /home/backup/local/database/Db_cwlog_${nowDate}.sql.gz /home/backup/ftp/backup/database/Db_cwlog_${nowDate}.sql.gz
#复制数据库文件至FTP目录
cp /home/backup/local/sitefile/Site_cwlog_${nowDate}.tar.gz /home/backup/ftp/backup/sitefile/Site_cwlog_${nowDate}.tar.gz
#复制打包的网站文件至FTP目录
umount /home/backup/ftp
#卸载FTP目录
最后一步,使用crontab
创建计划任务
在SSH终端执行crontab -e
,进入编辑器在文件末尾新建一行输入30 01 * * * /bin/sh /home/backup/backup.sh
Ctrl + o
写入文件
Ctrl + m + a
确认写入
Ctrl + x
退出编辑器
备份脚本将在每天凌晨01:30执行。