CodeGym /Adesua ahorow /Docker SELF /使用 rsync 和 scp 的備份

使用 rsync 和 scp 的備份

Docker SELF
等級 6 , 課堂 5
開放

使用 rsyncscp 的備份

1. 為什麼備份這麼重要?

今天我們來聊聊對所有 IT 和程式世界裡工作的人來說,最重要的任務之一——數據備份。如果你曾因硬碟故障或意外失誤而丟失過重要資料,那麼你一定很清楚這有多重要。如果還沒有經歷過——我們在這裡就是為了幫助避免這種情況!

想像一下:你辛辛苦苦做的專案工作了好幾個月,結果有一天你的硬碟決定罷工了。這感覺就像在 SQL 查詢的結尾忘記加分號一樣令人抓狂,但嚴重一千倍!系統會崩壞,人會犯錯,文件會消失。備份是應對這種意外的最好準備。

在 Linux 中,有幾個非常強大的工具可以用來備份。今天,我們要認識其中兩個:rsyncscp


2. 命令 rsync:快速又聰明的數據複製工具

rsync 是最受歡迎的數據複製和同步工具之一。它的主要優勢在於速度和效率。不像直接複製所有文件,rsync 僅複製更改過的檔案。這使其非常適合用於定期備份大量數據。

rsync 的語法

以下是基本的命令格式:

rsync [選項] 來源 目標

這裡:

  • 來源 — 要複製的檔案或目錄的路徑。
  • 目標 — 要將這些數據儲存在哪裡。

主要參數及其功能

以下是一些常用的選項:

  • -a (archive): 包含所有的元數據(權限、時間戳等)。
  • -v (verbose): 顯示詳細輸出,讓你可以看到正在進行的操作。
  • --progress: 顯示複製的進度(如果在處理大檔案時非常有用)。
  • --delete: 刪除目標端不再存在於來源端的文件,對於完全同步非常實用。
  • -z (compress): 傳輸前壓縮數據,加速操作(特別是在進行網絡操作時很重要)。

範例:本地數據複製

我們先創建一個目錄 /backup 來儲存備份。

mkdir /backup

將目錄 /home 的內容複製到 /backup

rsync -av /home /backup

解釋這個範例:

  • -a 保存了文件的結構和權限。
  • -v 提供了操作進度的信息。

如果你再次執行這個命令,它只會複製更改過的或者是新的文件。

範例:遠程備份

現在假設你想將備份傳輸到遠程服務器。為此,rsync 支持使用 SSH。

rsync -av /backup user@remote_server:/remote_backup

這裡:

  • user — 遠程服務器上的用戶名。
  • remote_server — 你的遠程服務器的地址(例如 IP 地址或域名)。
  • /remote_backup — 服務器上的路徑,用來存儲數據。

如果你有一個 SSH 密鑰來進行授權,傳輸會更加簡單(也更安全)。


3. scp 指令:簡單又高效

scp (Secure Copy Protocol) —— 這是一個用於在本地與遠端機器之間複製文件的工具。它比 rsync 簡單一些,適合那些不需要完整同步的情況。

scp 語法

以下是該指令的基本格式:

scp [選項] 來源 目的地

其中:

  • 來源 —— 是您想複製的文件的路徑。
  • 目的地 —— 是目標地址,文件需傳送至此。

主要選項及其功能

以下是一些有用的選項:

  • -r: 遞歸複製整個目錄。
  • -C: 在傳輸之前壓縮文件。
  • -P: 指定非預設的 SSH 端口(預設為 22)。

範例:將文件傳到遠端機器

假如您想將某個文件從本地電腦傳送到伺服器,該文件名為 document.txt

scp document.txt user@remote_server:/remote_folder

如果文件位於目錄 /home/user/documents,指令將如下所示:

scp /home/user/documents/document.txt user@remote_server:/remote_folder

現在該文件將可在遠端機器的目錄 /remote_folder 中訪問。

範例:從伺服器下載文件到本地機器

這個過程也可以反向操作:

scp user@remote_server:/remote_folder/document.txt /home/user/documents

這樣 document.txt 文件就會出現在您的本地目錄中。


4. rsyncscp 的區別

雖然兩個命令都可以用來複製文件,但它們有各自的特點。

特點 rsync scp
速度 僅傳輸已更改的數據,對於大容量檔案更快 全部複製,即使文件未更改
同步 完全支持同步 不支持同步
數據壓縮 支持 -z 支持 -C
使用簡單性 配置較為複雜 操作界面簡單

所以,如果你只是需要快速傳輸文件——用 scp。但如果是關於例行同步和大數據量——一定用 rsync


5. 真實範例:設置備份

這是一個實際的任務:你想要設置一個完整的備份流程,將你的專案備份到遠程伺服器上。

  1. 假設你的專案檔案存放在資料夾 /home/user/project 中。你希望它們被備份到伺服器 backup.server.com 中的資料夾 /backups/project

  2. 為了加速拷貝過程,我們會使用 rsync

設置備份腳本

建立一個檔案 backup.sh

#!/bin/bash

SOURCE="/home/user/project"
DESTINATION="user@backup.server.com:/backups/project"

# 使用 rsync 進行備份
rsync -av --delete "$SOURCE" "$DESTINATION"

# 顯示完成訊息
echo "備份完成!"

讓檔案變為可執行:

chmod +x backup.sh

現在你可以手動執行這個腳本:

./backup.sh

或者將它新增到 cron 中以自動執行(我們會在課程稍後部分談論 cron)。


6. 常見錯誤及如何避免

  1. 命令行中的路徑不正確。 如果指定了錯誤的文件路徑,rsyncscp 什麼都不會複製。使用 lspwd 命令來確保路徑的正確性。

  2. 缺少授權密鑰。 如果在使用 SSH 時沒有設置密鑰,系統會不斷要求輸入密碼。設置 SSH 密鑰 來簡化此過程。

  3. 備份中斷。 如果網絡不穩定,rsync 在下次啟動時仍然會完成數據傳輸。但 scp 則需要重新開始。

使用 rsyncscp,你可以自信地將數據在本地電腦和遠程服務器之間複製和同步。這些工具是保護重要文件時的可靠助手。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION