类别:Linux / 日期:2025-12-30 / 浏览:21 / 评论:0
需求:
在centos7服务器中,将本地的/opt/web目录同步到远程ftp服务器186.35.62.41:2121中,远程目录为/web_backup。(远程目录是指进入ftp服务器所显示的目录,并非服务器中真实路径)。每天00:30执行。只同步更新修改或新增的,不对旧文件同步。远程服务器的文件也不作定期删除,所以备份文件会一直累加。(远程服务器空间要足够,并定期自行用df -h检查空间状态)
操作:
1、创建脚本目录和日志目录(如果之前已创建可忽略)
mkdir -p /home/script mkdir -p /home/log
2、创建备份脚本
vi /home/script/web_bk.sh
编辑:
#!/bin/bash
# 配置文件
LOG_FILE="/home/log/web_bk.log" # 日志
SOURCE_DIR="/opt/web" # 源目录
FTP_HOST="186.35.62.41" # 远程服务器名
FTP_PORT="2121" # 修改端口号
FTP_USER="itdog" # ftp用户名
FTP_PASS="www.itdog.net" # ftp密码
FTP_DIR="/web_backup" # 远程备份保存目录
# 记录日志函数
log() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}
# 上传到FTP服务器
log "开始同步到FTP服务器..."
lftp -u $FTP_USER,$FTP_PASS -p $FTP_PORT $FTP_HOST <<EOF 2>> $LOG_FILE
# 禁用SSL证书验证。如果服务器有ssl证书验证,需要取消注释
#set ssl:verify-certificate no
# 设置超时和重试
set net:timeout 60
set net:max-retries 3
# 进入远程目录
cd $FTP_DIR
# 同步文件(只上传新的或修改的文件,如果需要保持远程和本地文件一致,需将--only-newer更改为--delete 。命令后面的“./”意思是远程打开的当前目录,即是上个命令的“cd $FTP_DIR”,所以如果将两条命令合在一起的话可以是:mirror -R --only-newer --verbose $SOURCE_DIR $FTP_DIR)
mirror -R --only-newer --verbose $SOURCE_DIR ./
bye
EOF
if [ $? -eq 0 ]; then
log "同步成功^_^"
else
log "同步失败!-_-"
fi
log "========== 同步结束 =========="
echo "" >> $LOG_FILE3、设置脚本执行权限
chmod +x /home/script/web_bk.sh
4、设置定时任务
# 编辑crontab crontab -e # 添加以下行(每天00:30执行) 30 0 * * * /home/script/web_bk.sh # 查看crontab任务 crontab -l
5、可以手工输入以下命令测试是否成功
sh /home/script/web_bk.sh
完成!
版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。
