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.pswp.cn/web/70682.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70682.shtml
英文地址,請注明出處:http://en.pswp.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()…