类别: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_FILE

3、设置脚本执行权限

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

完成!

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章