Jenkins数据备份到windows FTP服务器

文章目录

    • 背景
    • [1. 安装配置 FileZilla Server(Windows)](#1. 安装配置 FileZilla Server(Windows))
      • [1.1 下载并安装 FileZilla Server](#1.1 下载并安装 FileZilla Server)
      • [1.2 配置 FTP 用户和共享目录](#1.2 配置 FTP 用户和共享目录)
    • [2. 安装并配置 FTP 客户端(CentOS)](#2. 安装并配置 FTP 客户端(CentOS))
      • [2.1 在 CentOS 安装 lftp](#2.1 在 CentOS 安装 lftp)
    • [3. 编写 Jenkins 备份脚本](#3. 编写 Jenkins 备份脚本)
      • [3.1 赋予执行权限](#3.1 赋予执行权限)
      • [3.2 测试执行](#3.2 测试执行)
    • [4. 配置定时任务(Crontab)](#4. 配置定时任务(Crontab))
      • [4.1 编辑 Crontab 任务](#4.1 编辑 Crontab 任务)
      • [4.2 重启 Crontab 服务(适用于部分系统)](#4.2 重启 Crontab 服务(适用于部分系统))
      • [4.3 确认定时任务是否生效](#4.3 确认定时任务是否生效)
    • [5. 可能遇到的问题及解决方案](#5. 可能遇到的问题及解决方案)
      • [5.1 脚本执行时报](#5.1 脚本执行时报)
      • [5.2 权限问题](#5.2 权限问题)
      • [5.3 FTP 连接失败](#5.3 FTP 连接失败)
    • [6. 总结](#6. 总结)

背景

在 CentOS 上搭建了 Jenkins 服务,为了防止意外丢失数据,我们需要定期备份 Jenkins 数据。本方案采用 FileZilla Server 作为 FTP 服务器,并使用 lftp 进行数据同步。


1. 安装配置 FileZilla Server(Windows)

在 Windows 上安装并配置 FileZilla Server 以接收 Jenkins 备份数据。

1.1 下载并安装 FileZilla Server

1.2 配置 FTP 用户和共享目录

  1. 添加用户(用于 CentOS 连接 FTP 服务器上传文件)
  2. 设置共享目录 ,假设目录路径为 F:\FileZillaServer,用于存放备份数据。

最终,FTP 服务器上的 Jenkins 备份目录路径为:

复制代码
F:\FileZillaServer\jenkins_home

2. 安装并配置 FTP 客户端(CentOS)

2.1 在 CentOS 安装 lftp

bash 复制代码
sudo yum update -y  # 更新系统(CentOS 7/8)
sudo yum install -y lftp

3. 编写 Jenkins 备份脚本

在 CentOS 服务器上创建 backup_jenkins_ftp.sh,用于定期同步 Jenkins 数据到 FTP 服务器。

sh 复制代码
#!/bin/bash

# FTP 配置
FTP_HOST="xxx.22.212.xx"
FTP_USER="autotest"
FTP_PASS="autotest"
FTP_TARGET_DIR="jenkins_home"  # Windows FTP 服务器上的目标目录(映射到 F:\FileZillaServer\jenkins_home)

# Jenkins 数据目录(CentOS)
SOURCE_DIR="/var/jenkins_home"

# 日志文件
LOG_FILE="/var/log/jenkins_ftp_backup.log"

# 使用 lftp 进行文件同步
lftp -u $FTP_USER,$FTP_PASS $FTP_HOST <<EOF
set ftp:ssl-allow no  # 如果 FTP 服务器不支持 SSL,则禁用 SSL
mirror -R $SOURCE_DIR $FTP_TARGET_DIR  # 递归同步 Jenkins 目录到 FTP 服务器
quit
EOF

# 记录日志
if [ $? -eq 0 ]; then
    echo "$(date '+%Y-%m-%d %H:%M:%S') - 备份成功" >> $LOG_FILE
else
    echo "$(date '+%Y-%m-%d %H:%M:%S') - 备份失败" >> $LOG_FILE
fi

3.1 赋予执行权限

bash 复制代码
chmod +x backup_jenkins_ftp.sh

3.2 测试执行

bash 复制代码
sudo ./backup_jenkins_ftp.sh

4. 配置定时任务(Crontab)

为了实现自动备份,我们使用 crontab 定时执行脚本。

4.1 编辑 Crontab 任务

bash 复制代码
crontab -e

添加以下任务,每天凌晨 2 点执行备份:

复制代码
0 2 * * * /home/xxx/jenkins/backup_jenkins_ftp.sh

4.2 重启 Crontab 服务(适用于部分系统)

bash 复制代码
sudo systemctl restart crond

4.3 确认定时任务是否生效

bash 复制代码
crontab -l

5. 可能遇到的问题及解决方案

5.1 脚本执行时报

'': command not found 该问题通常是由于脚本文件包含 Windows 换行符 (\r\n),而 Linux 只支持 \n 造成的。

解决方法:转换文件格式

bash 复制代码
dos2unix backup_jenkins_ftp.sh

如果 dos2unix 未安装,可用 sed 命令处理:

bash 复制代码
sed -i 's/\r$//' backup_jenkins_ftp.sh

5.2 权限问题

若执行时遇到权限不足的错误,可尝试:

bash 复制代码
sudo chmod +x backup_jenkins_ftp.sh
sudo chmod 666 /var/log/jenkins_ftp_backup.log

5.3 FTP 连接失败

  1. 检查 FTP 服务器是否开启

    bash 复制代码
    telnet 172.22.212.25 21

    如果连接失败,需检查 Windows 上 FileZilla Server 是否正常运行。

  2. 检查防火墙是否开放 21 端口

    bash 复制代码
    sudo firewall-cmd --add-port=21/tcp --permanent
    sudo firewall-cmd --reload

6. 总结

通过以上步骤,我们完成了 Jenkins 备份到 Windows FTP 服务器的自动化流程,主要包括:

  1. 在 Windows 上安装 FileZilla Server 作为 FTP 服务器。
  2. 在 CentOS 上安装 lftp 并编写同步脚本。
  3. 配置 Crontab 实现每日自动备份。
  4. 处理常见问题,确保备份流程稳定运行。

🎯 至此,Jenkins 数据将每日自动备份至 Windows FTP 服务器,确保数据安全可靠! 🚀

Reference:FileZilla Server/Client 的简单使用-CSDN博客

相关推荐
摩羯座-1856903059410 小时前
爬坑 10 年!京东店铺全量商品接口实战开发:从分页优化、SKU 关联到数据完整性闭环
linux·网络·数据库·windows·爬虫·python
罗政12 小时前
CentOS 7.6 系统源码部署 HivisionIDPhotos
linux·运维·centos
风跟我说过她12 小时前
Sqoop的安装与配置
hive·hadoop·经验分享·centos·hbase·sqoop
荣光波比16 小时前
RabbitMQ高可用集群搭建教程(基于CentOS 7.9 + Erlang 23.2.7 + RabbitMQ 3.8.8)
运维·centos·rabbitmq·erlang
zym大哥大17 小时前
高并发内存池
服务器·数据库·windows
IT 小阿姨(数据库)19 小时前
PostgreSQL通过pg_basebackup物理备份搭建流复制备库(Streaming Replication Standby)
运维·服务器·数据库·sql·postgresql·centos
铁手飞鹰20 小时前
VS2022创建项目工程笔记
c++·windows·笔记·visualstudio
私人珍藏库21 小时前
笔墨星河 - AI长篇小说生成软件
windows·ai·工具
charlie11451419121 小时前
Windows 10 系统编程——线程专题1
c++·windows·学习·线程
TeleostNaCl1 天前
如何在 Windows 上使用命令设置网卡的静态 IP 地址
网络·windows·经验分享·网络协议·tcp/ip·ip