Jenkins数据备份到windows FTP服务器
文章目录
- 背景
- 1. 安装配置 FileZilla Server(Windows)
- 1.1 下载并安装 FileZilla Server
- 1.2 配置 FTP 用户和共享目录
- 2. 安装并配置 FTP 客户端(CentOS)
- 2.1 在 CentOS 安装 lftp
- 3. 编写 Jenkins 备份脚本
- 3.1 赋予执行权限
- 3.2 测试执行
- 4. 配置定时任务(Crontab)
- 4.1 编辑 Crontab 任务
- 4.2 重启 Crontab 服务(适用于部分系统)
- 4.3 确认定时任务是否生效
- 5. 可能遇到的问题及解决方案
- 5.1 脚本执行时报
- 5.2 权限问题
- 5.3 FTP 连接失败
- 6. 总结
背景
在 CentOS 上搭建了 Jenkins 服务,为了防止意外丢失数据,我们需要定期备份 Jenkins 数据。本方案采用 FileZilla Server 作为 FTP 服务器,并使用 lftp 进行数据同步。
1. 安装配置 FileZilla Server(Windows)
在 Windows 上安装并配置 FileZilla Server 以接收 Jenkins 备份数据。
1.1 下载并安装 FileZilla Server
- 下载 FileZilla Server 0.9.60.2 中文安装版
- 安装并启动 FileZilla Server,弹出配置窗口:
- 主机:
localhost - 密码:留空,直接连接
- 主机:
1.2 配置 FTP 用户和共享目录
- 添加用户(用于 CentOS 连接 FTP 服务器上传文件)
- 设置共享目录,假设目录路径为
F:\FileZillaServer,用于存放备份数据。
最终,FTP 服务器上的 Jenkins 备份目录路径为:
F:\FileZillaServer\jenkins_home
2. 安装并配置 FTP 客户端(CentOS)
2.1 在 CentOS 安装 lftp
sudo yum update -y # 更新系统(CentOS 7/8)
sudo yum install -y lftp
3. 编写 Jenkins 备份脚本
在 CentOS 服务器上创建 backup_jenkins_ftp.sh,用于定期同步 Jenkins 数据到 FTP 服务器。
#!/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 ]; thenecho "$(date '+%Y-%m-%d %H:%M:%S') - 备份成功" >> $LOG_FILE
elseecho "$(date '+%Y-%m-%d %H:%M:%S') - 备份失败" >> $LOG_FILE
fi
3.1 赋予执行权限
chmod +x backup_jenkins_ftp.sh
3.2 测试执行
sudo ./backup_jenkins_ftp.sh
4. 配置定时任务(Crontab)
为了实现自动备份,我们使用 crontab 定时执行脚本。
4.1 编辑 Crontab 任务
crontab -e
添加以下任务,每天凌晨 2 点执行备份:
0 2 * * * /home/xxx/jenkins/backup_jenkins_ftp.sh
4.2 重启 Crontab 服务(适用于部分系统)
sudo systemctl restart crond
4.3 确认定时任务是否生效
crontab -l
5. 可能遇到的问题及解决方案
5.1 脚本执行时报
'': command not found 该问题通常是由于脚本文件包含 Windows 换行符 (\r\n),而 Linux 只支持 \n 造成的。
解决方法:转换文件格式
dos2unix backup_jenkins_ftp.sh
如果 dos2unix 未安装,可用 sed 命令处理:
sed -i 's/\r$//' backup_jenkins_ftp.sh
5.2 权限问题
若执行时遇到权限不足的错误,可尝试:
sudo chmod +x backup_jenkins_ftp.sh
sudo chmod 666 /var/log/jenkins_ftp_backup.log
5.3 FTP 连接失败
-
检查 FTP 服务器是否开启
telnet 172.22.212.25 21如果连接失败,需检查 Windows 上 FileZilla Server 是否正常运行。
-
检查防火墙是否开放 21 端口
sudo firewall-cmd --add-port=21/tcp --permanent sudo firewall-cmd --reload
6. 总结
通过以上步骤,我们完成了 Jenkins 备份到 Windows FTP 服务器的自动化流程,主要包括:
- 在 Windows 上安装 FileZilla Server 作为 FTP 服务器。
- 在 CentOS 上安装 lftp 并编写同步脚本。
- 配置 Crontab 实现每日自动备份。
- 处理常见问题,确保备份流程稳定运行。
🎯 至此,Jenkins 数据将每日自动备份至 Windows FTP 服务器,确保数据安全可靠! 🚀
Reference:FileZilla Server/Client 的简单使用-CSDN博客
相关文章:
Jenkins数据备份到windows FTP服务器
文章目录 背景1. 安装配置 FileZilla Server(Windows)1.1 下载并安装 FileZilla Server1.2 配置 FTP 用户和共享目录 2. 安装并配置 FTP 客户端(CentOS)2.1 在 CentOS 安装 lftp 3. 编写 Jenkins 备份脚本3.1 赋予执行权限3.2 测试…...
【R语言】卡方检验
一、定义 卡方检验是用来检验样本观测次数与理论或总体次数之间差异性的推断性统计方法,其原理是比较观测值与理论值之间的差异。两者之间的差异越小,检验的结果越不容易达到显著水平;反之,检验结果越可能达到显著水平。 二、用…...
ASP.NET Core托管服务
目录 托管服务的异常问题 托管服务中使用DI 托管服务案例:数据的定时导出 场景,代码运行在后台。比如服务器启动的时候在后台预先加载数据到缓存,每天凌晨3点把数据导出到备份数据库,每隔5秒钟在两张表之间同步一次数据。托管服…...
HarmonyOS 5.0应用开发——全局自定义弹出框openCustomDialog
【高心星出品】 文章目录 全局自定义弹出框openCustomDialog案例开发步骤完整代码 全局自定义弹出框openCustomDialog CustomDialog是自定义弹出框,可用于广告、中奖、警告、软件更新等与用户交互响应操作。开发者可以通过CustomDialogController类显示自定义弹出框…...
如何在C++ QT 程序中集成cef3开源浏览器组件去显示网页?
文章目录 1. **准备工作**1.1 下载CEF31.2 配置Qt项目2. **集成CEF3到Qt窗口**2.1 创建Qt窗口容器2.2 初始化CEF33. **处理CEF3消息循环**4. **处理多进程架构**5. **完整代码示例**`main.cpp`6. **常见问题**6.1 黑屏问题6.2 窗口嵌入失败6.3 多进程调试7.**Github源码参考**8…...
深入讲解MyBatis
1. MyBatis 的背景和优势 背景:在 Java 开发中,传统的 JDBC 操作数据库代码繁琐,需要手动管理数据库连接、编写 SQL 语句、处理结果集等,开发效率低且容易出错。MyBatis 应运而生,它通过将 SQL 语句与 Java 代码分离&a…...
使用matlab 对传递函数分析bode图和阶跃函数
如果已知一个系统的传递函数,想看一下bode图,可以通过simulink 建模,但是simulink运行起来相对比较慢,我一般都是直接通过matlab 的m语言写脚本实现。可以快速的获得结果 如 我们有一个一阶低通传递函数 syswn/(swn) 在matlab中…...
2025牛客寒假算法基础集训营5(补题)
C 小L的位运算 显然,如果两次反置的价格小于等于交换的价格,那么直接全部反置就好了。 反之,由于交换一定低于两次反置,我们尽可能用交换来消去不正确的位置。不正确的位置类型只有00,01,10,11&…...
FaceFusion如何设置公开链接和端口
有时候我们想在局域网内的其他设备上使用 FaceFusion,这时候需要设置公开链接和端口。 当你运行 FaceFusion 的时候,会发现有这样的一段提示: To create a public link, set shareTrue in launch().但是这个提示是错的,如果你查…...
神经网络常见激活函数 6-RReLU函数
文章目录 RReLU函数导函数函数和导函数图像优缺点pytorch中的RReLU函数tensorflow 中的RReLU函数 RReLU 随机修正线性单元:Randomized Leaky ReLU 函数导函数 RReLU函数 R R e L U { x x ≥ 0 a x x < 0 \rm RReLU \left\{ \begin{array}{} x \quad x \ge 0…...
计算机网络面经
文章目录 基础HTTPHTTP报文结构 (注意)RPC和http的区别TCPTCP报文结构(注意)IP基础 HTTP HTTP报文结构 (注意) 请求行:请求方法get/post,url,http版本 请求头:用户标识,请求体长度,类型,cookie 请求体:内容 状态行:状态码,状态消息、(http版本) 响应头:内…...
Qt:常用控件
目录 控件概述 控件体系的发展 按钮类控件 QPushButton QRadioButton QCheckBox QToolButton 显示类控件 QLabel QLCDNumber QProgressBar QCalendarWidget 输入类控件 QLineEdit QTextEdit QComboBox QSpinBox QDateEdit & QTimeEdit QDial QSlider …...
算法设计-找第二大数(C++)
一、问题描述 用于在给定的整数数组中找到 第二大值。 二、详细代码 #include<iostream> #include<limits.h> using namespace std; //初始化最大值为a[0],次大值为a[1],遍历一次,每次比较并更新最大值和次大值,最…...
【C++高并发服务器WebServer】-14:Select详解及实现
本文目录 一、BIO模型二、非阻塞NIO忙轮询三、IO多路复用四、Select()多路复用实现 明确一下IO多路复用的概念:IO多路复用能够使得程序同时监听多个文件描述符(文件描述符fd对应的是内核读写缓冲区),能够提升程序的性能。 Linux下…...
redis项目
短信登录 这一块我们会使用redis共享session来实现 商户查询缓存 通过本章节,我们会理解缓存击穿,缓存穿透,缓存雪崩等问题,让小伙伴的对于这些概念的理解不仅仅是停留在概念上,更是能在代码中看到对应的内容 优惠…...
Spring统一修改RequestBody
我们编写RestController时,有可能多个接口使用了相同的RequestBody,在一些场景下需求修改传入的RequestBody的值,如果是每个controller中都去修改,代码会比较繁琐,最好的方式是在一个地方统一修改,比如将he…...
NCV4275CDT50RKG 车规级LDO线性电压调节器芯片——专为新能源汽车设计的高可靠性电源解决方案
产品概述: NCV4275CDT50RKG 是一款符合 AEC-Q100 车规认证的高性能LDO(低压差线性稳压器),专为新能源汽车的严苛工作环境设计。该芯片支持 输出调节为 5.0 V 或 3.3 V,最大输出电流达 450mA,具备超低静态电流…...
前端开发架构师Prompt指令的最佳实践
前端开发架构师Prompt 提示词可作为系统提示词使用,可基于用户的需求输出对应的编码方案。 本次提示词偏向前端开发的使用,如有需要可适当修改关键词和示例。 推荐使用 Cursor 中作为自定义指令使用Cline 插件中作为自定义指令使用在力所能及的范围内使…...
【AI实践】Windsurf AI编程voice对话应用
Android Studio新建一个安卓 hello world 应用,使用gitee插件,推送到个人gitee仓库。 本文要写一个基于GLM4-voice的一个语音对话应用,参考 bigmodel.cn平台和开发文档:智谱AI开放平台 第一轮 打开cursor,model切换到…...
【自学笔记】文言一心的基础知识点总览-持续更新
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 文心一言知识点总览一、文心一言简介二、文心一言的核心功能三、文心一言的技术特点四、文心一言的应用场景五、文心一言的使用技巧六、文心一言的未来发展 总结 文…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
