使用 rsync 進行服務器文件同步與優化

使用 Rsync 工具在兩臺 Linux 服務器之間同步文件

Rsync 是一種高效的文件同步工具,它可以在本地或遠程服務器之間同步文件和目錄。Rsync 通過僅傳輸文件的變化部分來減少數據傳輸量,因此特別適合用于定期備份或同步大量數據。本文將詳細介紹如何將 A 服務器的文件同步到 B 服務器。

1. 準備工作

在開始之前,確保以下條件已滿足:

  • 兩臺 Linux 服務器:A 服務器(源服務器)和 B 服務器(目標服務器)。

  • SSH 訪問權限:確保你可以通過 SSH 從 A 服務器訪問 B 服務器,或者反之。

  • Rsync 安裝:確保 Rsync 在兩臺服務器上均已安裝。如果沒有安裝,可以使用以下命令進行安裝:

    sudo apt-get install rsync  # 對于基于 Debian 的系統(如 Ubuntu)
    sudo yum install rsync      # 對于基于 Red Hat 的系統(如 CentOS)
    
2. 配置 SSH 無密碼登錄

為了簡化 Rsync 的使用,建議配置 SSH 無密碼登錄。這樣在執行 Rsync 命令時不需要手動輸入密碼。

在 A 服務器上生成 SSH 密鑰(如果尚未生成):

ssh-keygen -t rsa

按提示操作,默認情況下會在 ~/.ssh/ 目錄下生成 id_rsaid_rsa.pub 文件。

將公鑰復制到 B 服務器:

ssh-copy-id user@B_server_ip

其中 user 是 B 服務器的用戶名,B_server_ip 是 B 服務器的 IP 地址。輸入 B 服務器的密碼后,公鑰將被復制到 B 服務器的 ~/.ssh/authorized_keys 文件中。

測試無密碼登錄:

ssh user@B_server_ip

如果配置正確,你應該能夠無需密碼登錄到 B 服務器。

3. 使用 Rsync 同步文件

基本命令格式:

rsync [選項] 源路徑 目標路徑

將 A 服務器的文件同步到 B 服務器:

rsync -avz -e ssh /path/to/source/ user@B_server_ip:/path/to/destination/

參數解釋:

  • -a:歸檔模式,表示遞歸傳輸并保持文件屬性(如權限、時間戳等)。
  • -v:詳細模式,輸出同步過程中的詳細信息。
  • -z:壓縮傳輸,減少數據傳輸量。
  • -e ssh:指定使用 SSH 作為遠程 shell。
  • /path/to/source/:A 服務器上要同步的文件或目錄路徑。
  • user@B_server_ip:/path/to/destination/:B 服務器上的目標路徑。

示例:

假設 A 服務器上有一個目錄 /home/user/data,我們想將其同步到 B 服務器的 /backup/data 目錄,命令如下:

rsync -avz -e ssh /home/user/data/ user@B_server_ip:/backup/data/

注意事項:

  • 如果目標路徑不存在,Rsync 會自動創建。
  • 如果源路徑以 / 結尾,Rsync 會同步目錄內容;如果不以 / 結尾,Rsync 會同步整個目錄。
4. 定期自動同步

為了定期自動同步文件,可以使用 cron 任務。

編輯 cron 任務:

crontab -e

添加以下行以每天凌晨 2 點同步:

0 2 * * * rsync -avz -e ssh /home/user/data/ user@B_server_ip:/backup/data/

保存并退出編輯器。

5. 高級選項
  • 1.指定 SSH 端口
    如果 B 服務器的 SSH 端口不是默認的 22,可以通過 -e 參數指定端口號:

    rsync -avz -e "ssh -p 2222" /home/user/data/ user@B_server_ip:/backup/data/
    
  • 2.模擬運行:
    如果不確定 rsync 會覆蓋哪些文件,可以先使用 --dry-run 參數進行模擬運行:

    rsync -avz --dry-run -e "ssh -p 51222" /home/user/data/ user@B_server_ip:/backup/data/
    
  • 3.排除特定文件或目錄:

    rsync -avz -e ssh --exclude '*.log' /home/user/data/ user@B_server_ip:/backup/data/
    
  • 4.排除多個文件或目錄:

    rsync -avz -e ssh --exclude '*.log' --exclude 'log' /home/user/data/ user@B_server_ip:/backup/data/
    
  • 5.后臺運行 rsync
    對于大文件傳輸,可以將 rsync 放到后臺運行,使用 nohup 命令:

    nohup rsync -avz -e "ssh -p 2222" /home/user/data/ user@B_server_ip:/backup/data/ > rsync.log 2>&1 &
    

    日志會寫入 rsync.log 文件,可以隨時查看進度:

    tail -f rsync.log
    
  • 6.查看進度:
    如果希望實時查看傳輸進度,可以在 rsync 命令中添加 --progress 參數:

    rsync -avz --progress -e "ssh -p 2222" /home/user/data/ user@B_server_ip:/backup/data/
    
  • 7.中止同步:
    如果需要在同步過程中中止任務,可以按下 Ctrl + C(前臺運行),或者使用 kill 命令終止后臺進程:

    ps aux | grep rsync
    kill <PID>
    
  • 8.覆蓋已存在的文件:
    rsync 默認會覆蓋目標服務器上已存在的文件。如果不希望覆蓋,可以使用 --ignore-existing 參數:

    rsync -avz --ignore-existing -e "ssh -p 2222" /home/user/data/ user@B_server_ip:/backup/data/
    
  • 9.強制覆蓋已存在的文件:
    如果目標服務器上存在一些特殊文件(例如符號鏈接或設備文件),rsync 默認會跳過這些文件。如果你希望強制覆蓋這些文件,可以使用 --force 參數。

    rsync -avz --force -e "ssh -p 2222" /home/user/data/ user@B_server_ip:/backup/data/
    
  • 10.備份被覆蓋的文件:
    如果希望在覆蓋目標文件之前備份這些文件,可以使用 --backup 參數:

    rsync -avz --backup -e "ssh -p 51222" /home/user/data/ user@B_server_ip:/backup/data/
    
  • 11.限制帶寬:

    rsync -avz -e ssh --bwlimit=1000 /home/user/data/ user@B_server_ip:/backup/data/
    

    其中 --bwlimit=1000 表示限制帶寬為 1000 KB/s。

6. 常見問題及解決方案

問題1:SSH 連接超時

解決方案:檢查網絡連接,確保兩臺服務器之間的網絡暢通。可以嘗試增加 SSH 連接超時時間:

rsync -avz -e "ssh -o ConnectTimeout=10" /home/user/data/ user@B_server_ip:/backup/data/

問題2:權限不足

解決方案:確保你有足夠的權限訪問源和目標路徑。可以使用 sudo 或以具有足夠權限的用戶身份執行命令。

問題3:文件沖突

解決方案:使用 --backup 選項備份沖突文件:

rsync -avz -e ssh --backup /home/user/data/ user@B_server_ip:/backup/data/
7. 總結

通過 Rsync 工具,你可以輕松地在兩臺 Linux 服務器之間同步文件。本文詳細介紹了從準備工作到配置 SSH 無密碼登錄,再到使用 Rsync 進行文件同步的整個過程。通過掌握這些知識,你可以高效地管理和同步服務器上的文件。

如果你有任何問題或需要進一步的幫助,請隨時聯系我。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74780.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74780.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74780.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

卷積神經網絡 - 微步卷積、空洞卷積

一、微步卷積 微步卷積&#xff08;Fractionally Strided Convolution&#xff09;&#xff0c;通常也稱為轉置卷積&#xff08;Transposed Convolution&#xff09;或反卷積&#xff08;Deconvolution&#xff09;&#xff0c;是深度學習&#xff08;尤其是卷積神經網絡&…

詳解java體系實用知識總結

0.java技術能力框架 基礎模塊應用模塊綜合模塊技術崗位與面試流程常用工具集系統架構設計計算機基礎常用框架微服務架構jvm原理緩存容器化多線程隊列云計算&#xff08;阿里云/aws&#xff09;設計模式數據庫數據結構與算法 1.常用設計模式與應用場景 工廠模式&#xff1a;s…

設計模式之創建型5種

設計模式 為什么設計模式是23種創建型 對象創建為什么設計模式是23種 設計模式之所以被歸納為23種,而非其他數量,源于GoF(Gang of Four)在1994年的系統性總結和分類。這一數量的確定并非偶然,而是基于以下核心原因: 他們遵循“大三律”(Rule of Three),即只有經過三個…

Oracle 23ai Vector Search 系列之2 ONNX(Open Neural Network Exchange)

文章目錄 Oracle 23ai Vector Search 系列之2 ONNX(Open Neural Network Exchange)ONNX基本概念ONNX(Open Neural Network Exchange)ONNX Runtime ONNX Runtime 在Oracle數據庫中的集成參考 Oracle 23ai Vector Search 系列之2 ONNX(Open Neural Network Exchange) 我們在看【…

統一語言學習范式

摘要 現有的預訓練模型通常針對特定類別的問題。迄今為止&#xff0c;關于何種架構和預訓練設置應為最佳似乎仍未達成共識。本文提出了一個統一的框架&#xff0c;用于預訓練在多種數據集和設置中普遍有效的模型。我們首先將架構原型與預訓練目標這兩個常被混為一談的概念進行…

Flutter項目升級到指定版本的詳細步驟指南

一、升級前的準備工作 備份項目 使用Git提交當前所有修改&#xff1a;git commit -am "Pre-upgrade backup"或直接復制項目文件夾 查看當前環境信息 flutter --version flutter doctor二、升級Flutter SDK到指定版本 方法1&#xff1a;通過版本管理工具升級&#x…

22、web前端開發之html5(三)

六. 離線存儲與緩存 在網絡環境不穩定或需要優化資源加載速度的場景下&#xff0c;離線存儲與緩存技術顯得尤為重要。HTML5引入了多種離線存儲和緩存機制&#xff0c;幫助開發者提升用戶體驗。本節將詳細介紹Application Cache、localStorage、sessionStorage以及IndexedDB等技…

用HTML和CSS生成炫光動畫卡片

這個效果結合了漸變、旋轉和懸浮效果的炫酷動畫示例&#xff0c;使用HTML和CSS實現。 一、效果 二、實現 代碼如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&quo…

【嵌入式學習2】數組

目錄 ## 數組概念 ## 數組使用 ## 數組初始化 ## 數組名 ## 數組長度 ## 數組相關題目 1、找最大值 2、逆置 ## 數組和指針 指針加整數的含義 ## 指針數組 ## 數組名做函數參數 ## 函數參數傳遞數組 1、在函數內部 2. 在函數外部 ## 多維數組 使用下標訪問 #…

C++中的判斷與循環

一.if判斷語句 1.程序中的判斷&#xff1a; if (要執行的判斷&#xff0c;最后的返回值要是bool型的數據) {如果為真&#xff0c;要執行的代碼段; } #include"iostream" using namespace std;int main() {int ans;cin >> ans;if (ans > 1000) {cout <…

前端開發中生成網站的favicon.ico文件的軟件推薦及使用方法

日常網站開發中&#xff0c;我們經常需要生成網站的favicon.ico文件&#xff0c;今天我在這里來推薦幾個編輯.ico(也可將圖片格式轉化為.ico)圖片&#xff0c;而且免費的那軟件&#xff1a; GIMP&#xff1a;一個功能強大的開源圖像編輯軟件&#xff0c;支持多種文件格式&#…

淺談WebSocket-FLV

FLV是一種視頻數據封裝格式&#xff0c;這種封裝被標準通信協議HTTP-FLV和RTMP協議應用。 而WebSocket-FLV是一種非標的FLV封裝數據從后端發送到前端的一種方式。 在WebSocket的url請求中&#xff0c;包含了需要請求設備的視頻相關信息&#xff0c;在視頻數據到達時&#xff0c…

基于ADMM無窮范數檢測算法的MIMO通信系統信號檢測MATLAB仿真,對比ML,MMSE,ZF以及LAMA

目錄 1.算法運行效果圖預覽 2.算法運行軟件版本 3.部分核心程序 4.算法理論概述 4.1 ADMM算法 4.2 最大似然ML檢測算法 4.3 最小均方誤差&#xff08;MMSE&#xff09;檢測算法 4.4 迫零&#xff08;ZF&#xff09;檢測算法 4.5 OCD_MMSE 檢測算法 4.6 LAMA檢測算法 …

cocos creator 筆記-路邊花草

版本&#xff1a;3.8.5 實現目標&#xff1a;給3d道路生成路邊景觀花草 在場景下創建一個節點&#xff0c;我這里種植兩種花草模型&#xff0c;蘭花和菊花&#xff0c;所以分別在節點下另創建兩個節點&#xff0c;為了靜態合批。 1.將花草模型分別拖入場景中&#xff0c;制作…

R語言——循環

參考資料&#xff1a;學習R 在R中有三種循環&#xff1a;repeat、while和for。雖然向量化意味著我們可能并不需要大量使用它們&#xff0c;但在需要重復執行代碼時&#xff0c;它們是非常有用的。 1、重復循環 R中最容易掌握的循環是repeat。它所做的事情就是反復地執行代碼&a…

springboot使用阿里限流框架-sentinel

當前項目源碼 控制臺下載 啟動bin中的看板服務&#xff1a;賬號密碼:sentinel/sentinel 官方文檔地址 項目引入依賴 <!-- sentinel注解支持 --> <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-annotation-aspectj<…

CSS3學習教程,從入門到精通,CSS3 元素的浮動與定位語法知識點及案例代碼(17)

CSS3 元素的浮動與定位語法知識點及案例代碼 一、CSS3 浮動&#xff08;float&#xff09; 知識點 1. **定義** &#xff1a;浮動使元素向左或向右移動&#xff0c;直到它的外邊緣碰到包含框或另一個浮動元素的邊框為止。浮動主要用于布局&#xff0c;如實現圖文繞排等效果。…

數據結構:漢諾塔問題的遞歸求解和分析

遞歸方法求解該類問題&#xff0c;是一種簡單的思維方法&#xff0c;通常比使用迭代方法更簡單。但是&#xff0c;遞歸方法也有劣勢。此處以典型的漢諾塔問題&#xff08;Tower of Hanoi&#xff09;為例給予說明。 漢諾塔是根據一個傳說形成的數學問題&#xff0c;最早是由法國…

3.27學習總結 算法題

自己用c語言做的&#xff0c;不盡如意 后面看了題解&#xff0c;用的是c&#xff0c;其中string 變量和字符串拼接感覺比c方便好多&#xff0c;可以用更少的代碼實現更好的效果&#xff0c;打算之后去學習c&#xff0c;用c寫算法。 遞歸&#xff0c;不斷輸入字符&#xff0c;…

vue 圖片放大到全局

背景&#xff1a; 在vue項目中&#xff0c;el-image組件圖片組件用于展示圖片&#xff0c;組件自帶的屬性preview-teleported&#xff0c;設置為true可以控制圖片放大到全局 實現效果&#xff1a; 核心代碼&#xff1a; //圖片地址&#xff1a;BASEUrl /file/ item.file //這…