sh脚本把服务器B,服务器C目录的文件下载到服务器A目录,添加开机自启动并且一小时执行一次脚本

脚本逻辑 第一次会下载,第二次比较如果有就不下载
文件已存在:
如果目标目录中已经存在同名文件,rsync 会比较源文件和目标文件的大小和修改时间。
如果源文件和目标文件的大小和修改时间完全相同,rsync 会跳过该文件,不会重新下载。
如果源文件和目标文件的大小或修改时间不同,rsync 会重新下载并覆盖目标文件。
文件不存在:
如果目标目录中不存在同名文件,rsync 会直接下载该文件。

下载
https://sourceforge.net/projects/sshpass/files/sshpass/1.10/

链接2
RPM resource sshpass

在服务器A上面执行    把压缩包上传到你要放的目录

tar xvzf sshpass-1.10.tar.gz

 cd sshpass-1.10
 ./configure

 make

 make install

 sshpass -V

卸载

cd sshpass-1.05/

make uninstall

make clean

脚本内容,名称自己起,假设除了ip其它都一致
 

#!/bin/bash# 服务器信息
SERVER_USER="1"
SERVER_PORT="2"
SERVER_PASSWORD="xx"
REMOTE_DIR="/f1/"
LOCAL_DIR="/fdown/"
LOG="/opt/xx.log"# 服务器 IP 地址
1_HOST="10.1"  # 服务器1
2_HOST="10.2"   # 服务器2# 初始化文件计数器
TOTAL_FILES=0# 下载函数
download_files() {local host=$1echo "正在从 $host 下载文件..." | tee -a "$LOG"# 获取远程目录中的文件列表file_list=$(sshpass -p "$SERVER_PASSWORD" ssh -p $SERVER_PORT $SERVER_USER@$host "ls $REMOTE_DIR")if [ $? -ne 0 ]; thenecho "$(date): 无法获取 $host 的文件列表" | tee -a "$LOG"exit 1fi# 统计文件数量file_count=$(echo "$file_list" | wc -l)TOTAL_FILES=$((TOTAL_FILES + file_count))# 使用 rsync 下载文件,并记录文件名echo "以下文件将从 $host 下载:" | tee -a "$LOG"echo "$file_list" | tee -a "$LOG"sshpass -p "$SERVER_PASSWORD" rsync -avz -e "ssh -p $SERVER_PORT" $SERVER_USER@$host:$REMOTE_DIR/ $LOCAL_DIRif [ $? -eq 0 ]; thenecho "$(date): 从 $host 下载文件成功" | tee -a "$LOG"echo "下载文件数量: $file_count" | tee -a "$LOG"elseecho "$(date): 从 $host 下载文件失败" | tee -a "$LOG"exit 1  # 失败时退出脚本fi
}# 无限循环,每 1 小时执行一次
while true; do# 从服务器1下载文件download_files "$1_HOST"# 从服务器2下载文件download_files "$2_HOST"echo "$(date): 所有文件下载完成" | tee -a "$LOG"echo "总下载文件数量: $TOTAL_FILES" | tee -a "$LOG"# 休眠 1 小时sleep 3600
done

赋权 chmod +x 脚本

执行 脚本.sh
把脚本加入自启动

创建一个新的 systemd 服务单元文件:

sudo vim /etc/systemd/system/ziqidong.service

在打开的文件中添加以下内容:

[Unit]

Description=Process Watchdog Service

After=network.target

[Service]

Type=simple

ExecStart=/opt/watchdog/ziqidong.sh  

Restart=on-failure

[Install]

WantedBy=multi-user.target

一定要赋权

chmod -R 777 脚本目录

重新加载 systemd 配置:

sudo systemctl daemon-reload

设置开机自启动:

sudo systemctl enable ziqidong.service

启动服务:

sudo systemctl start ziqidong.service

# 关闭 docker 后台服务

# 如果提示“Warning: Stopping docker.service, but it can still be activated by: docker.socket”,则执行 systemctl stop docker.socket 即可

sudo systemctl stop ziqidong.service

# 重启 docker 服务

sudo systemctl restart ziqidong.service

检查服务状态:

sudo systemctl status ziqidong.service

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/70682.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云手机如何进行经纬度修改

云手机如何进行经纬度修改 云手机修改经纬度的方法因不同服务商和操作方式有所差异,以下是综合多个来源的常用方法及注意事项: 通过ADB命令注入GPS数据(适用于技术用户) 1.连接云手机 使用ADB工具连接云手机服务器,…

透彻理解:方差、协方差、相关系数、协方差矩阵及其应用

最近看了几篇跨领域特征对齐方面的经典文献,学者们搞了很多花样,如有的提出一阶统计特征对齐,有的提出二阶统计特征对齐,有的学者提出高阶统计特征对齐。 通俗而言,就是在统计特征层面对跨域特征进行对齐,…

Unity基础学习(二)

二、Mono中的重要内容 1、延迟函数 (1)延迟函数定义 延迟执行的函数,可以设定要延迟执行的函数和具体延迟的时间 (2)延迟函数的使用 #region 1、延迟函数//函数:Invoke(函数名/字符串,延迟时…

20250212:ZLKMedia 推流

1:资料 快速开始 ZLMediaKit/ZLMediaKit Wiki GitHub GitHub - ZLMediaKit/ZLMediaKit: WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT server and client framework based on C++11 文档里面提供了各个系…

Holoens2开发报错记录02_通过主机获取彩色和深度数据流常见错误

01.E1696 E1696 无法打开源文件 “stdio.h” 解决方法: 更新一下SDK 1)打开Visual Studio Installer,点击修改 2)安装详细信息中自己系统对应的SDK,点击修改即可 02.WinError 10060 方法来源 解决方法&#xff1a…

【Qt之QQuickWidget】QML嵌入QWidget中

由于我项目开始使用Widgets,换公司后直接使用QML开发,没有了解过如何实现widget到qml过渡,恰逢面试时遇到一家公司希望从widget迁移到qml开发,询问相关实现,一时语塞,很尴尬,粗略研究并总结下。 对qwidget嵌…

从单片机的启动说起一个单片机到点灯发生了什么下——使用GPIO点一个灯

目录 前言 HAL库对GPIO的抽象 核心分析:HAL_GPIO_Init 前言 我们终于到达了熟悉的地方,对GPIO的初始化。经过漫长的铺垫,我们终于历经千辛万苦,来到了这里。关于GPIO的八种模式等更加详细的细节,由于只是点个灯&am…

ESP32S3:解决RWDT无法触发中断问题,二次开发者怎么才能使用内部RTC看门狗中断RWDT呢?

目录 基于ESP32S3:解决RWDT无法触发中断问题引言解决方案1. 查看报错日志2. 分析报错及一步一步找到解决方法3.小结我的源码基于ESP32S3:解决RWDT无法触发中断问题 引言 在嵌入式系统中,RWDT(看门狗定时器)是确保系统稳定性的重要组件。然而,在某些情况下,RWDT可能无法…

对计算机中缓存的理解和使用Redis作为缓存

使用Redis作为缓存缓存例子缓存的引入 Redis缓存的实现 使用Redis作为缓存 缓存 ​什么是缓存,第一次接触这个东西是在考研学习408的时候,计算机组成原理里面学习到Cache缓存,用于降低由于内存和CPU的速度的差异带来的延迟。它是在CPU和内存…

vue3的实用工具库@vueuse/core

1.什么是vueuse/core 是一个基于 ‌Vue Composition API‌ 开发的实用工具库,旨在通过封装高频功能为可复用的组合式函数(Composables),简化 Vue 应用的开发流程。 提供 ‌200 开箱即用的函数‌,覆盖状态管理、浏览器…

基于SSM的《计算机网络》题库管理系统(源码+lw+部署文档+讲解),源码可白嫖!

摘 要 《计算机网络》题库管理系统是一种新颖的考试管理模式,因为系统是用Java技术进行开发。系统分为三个用户进行登录并操作,分别是管理员、教师和学生。教师在系统后台新增试题和试卷,学生进行在线考试,还能对考生记录、错题…

C++初阶——简单实现stack和queue

目录 1、Deque(了解) 1.1 起源 1.2 结构 1.3 优缺点 1.4 应用 2、Stack 3、Queue 4、Priority_Queue 注意:stack,queue,priority_queue是容器适配器(container adaptor) ,封装一个容器,按照某种规则使用&#…

第2课 树莓派镜像的烧录

树莓派的系统通常是安装在SD卡上的‌。SD卡作为启动设备,负责启动树莓派并加载操作系统。这种设计使得树莓派具有便携性和灵活性,用户可以通过更换SD卡来更换操作系统或恢复出厂设置。 烧录树莓派的镜像即是将树莓派镜像烧录到SD卡上,在此期间会格式化SD卡,如果SD卡…

【Unity】URP管线Shader编程实例详解 (1) : 漩涡效果shader

作者说 本系列教程适用于有编程基础和图形学基础知识的读者.如果对您有所帮助,请点个免费的赞和关注,您的支持就是我更新最大的动力!如果你有任何想看的内容欢迎评论区留言!本系列教程Github : https://github.com/Sky0Master/Un…

如何安装vm 和centos

安装 VMware Workstation(以 Windows 系统为例) 1. 下载 VMware Workstation 打开 VMware 官方网站(Desktop Hypervisor Solutions | VMware ),在页面中选择适合你系统的版本进行下载。如果你是个人非商业使用&#x…

STM32-心知天气项目

一、项目需求 使用 ESP8266 通过 HTTP 获取天气数据(心知天气),并显示在 OLED 屏幕上。 按键 1 :循环切换今天 / 明天 / 后天天气数据; 按键 2 :更新天气。 二、项目框图 三、cjson作用 https://gi…

Wireshark简单教程

1.打开Wireshark,点击最上面栏目里面的“捕获”中的“选项” 2.进入网卡选择界面,选择需要捕获的选择,这里我选择WLAN 3.双击捕获选择出现下面界面 4.点击如下图红方框即可停止捕获 5.点击下图放大镜可以进行放大 6.你也可以查询tcp报文如下图

【Http和Https区别】

概念: 一、Http协议 HTTP(超文本传输协议)是一种用于传输超媒体文档(如HTML)的应用层协议,主要用于Web浏览器和服务器之间的通信。http也是客户端和服务器之间请求与响应的标准协议,客户端通常…

Unity Shader 学习13:屏幕后处理 - 使用高斯模糊的Bloom辉光效果

目录 一、基本的后处理流程 - 以将画面转化为灰度图为例 1. C#调用shader 2. Shader实现效果 二、Bloom辉光效果 1. 主要变量 2. Shader效果 (1)提取较亮区域 - pass1 (2)高斯模糊 - pass2&3 (3&#xff…

【R语言】dplyr包经典函数summarise函数

dplyr包经典函数summarise函数,后面改名乘reframe函数了,但是summarise仍然适用 这个函数的返回结果是一个新的数据框,下面讲一下几种常见用法 示例数据为R自带的数据集mtcars 1.不分组 mtcars %>%summarise(mean mean(disp), n n()…