Ubuntu使用rsync教學:高效備份、同步、遠端傳輸全攻略

目次

1. 前言

什麼是rsync?

rsync是一個高速且高效的指令列工具,用於同步和複製檔案及目錄。特別是在Linux和Unix系統上廣泛使用,因為它只傳輸差異部分,即使檔案數量龐大也能有效率地完成同步。在Ubuntu等大多數Linux發行版中都預設安裝,是伺服器管理員和開發者不可或缺的工具。

在Ubuntu上使用rsync的優勢

在Ubuntu上,rsync非常適合日常檔案備份或多個目錄同步作業。只需在終端機輸入幾行指令,無需依賴圖形介面,就能高速進行本地或遠端的檔案傳輸。

常見的應用場景包括:

  • 定期備份到外接硬碟或NAS
  • 同步開發專案資料夾
  • 部署到遠端伺服器
  • 透過檔案鏡像提升可用性

與其他指令的比較

cp相比,rsync僅傳輸來源和目標之間的差異,大幅縮短處理時間。相比scp,rsync支援中斷續傳和靈活的頻寬限制設定,同時也能保留檔案屬性(擁有者、權限、時間戳等),這是很大的優勢。

本文目的

本篇文章將詳細介紹如何在Ubuntu環境下安裝與熟練運用rsync,搭配實際指令範例及應用案例。也會針對初學者介紹GUI工具及常見問題排解,讓你能循序漸進學會rsync的實戰技巧。

侍エンジニア塾

2. 在Ubuntu安裝rsync的方法

如何確認Ubuntu已安裝rsync

多數Ubuntu系統預設已安裝rsync。你可以先執行下方指令確認是否可用:

rsync --version

如果顯示版本資訊,表示已經安裝,可以直接使用。

未安裝rsync時的處理步驟

若出現「command not found」或「rsync: command not found」訊息,請按照以下步驟安裝:

  1. 更新套件資訊:
sudo apt update
  1. 安裝rsync:
sudo apt install rsync
  1. 安裝完成後再次確認版本:
rsync --version

若能正常顯示版本資訊,則代表安裝成功。

有必要用snap或其他方法安裝嗎?

在Ubuntu上,建議使用APT安裝rsync,這是最推薦且最穩定、相容性最好的方式。snap版雖然存在,但一般用途APT版本就很足夠,除非有特殊需求。

安裝注意事項

  • 較舊的Ubuntu版本可能需先更新套件庫。
  • 安裝時需root權限,請不要忘記加上sudo
  • 若網路不穩,安裝過程可能失敗,建議在穩定連線下執行。

3. rsync的基本用法

rsync的基本語法

rsync指令語法簡潔且彈性十足,基本格式如下:

rsync [選項] 來源 目標

例如,將/home/user/documents/的內容備份到/mnt/backup/

rsync -av /home/user/documents/ /mnt/backup/

上述指令常用選項如下:

  • -a:歸檔模式(保留目錄結構、權限、擁有者等)
  • -v:詳細顯示傳輸檔案清單

注意目錄路徑最後的斜線

rsync根據來源路徑是否有斜線,處理方式會不同。

  • /home/user/documents/(有斜線)
    → 只同步內容(如:file1.txt, file2.txt等)
  • /home/user/documents(無斜線)
    → 包含整個documents資料夾一起複製(結果:/mnt/backup/documents/file1.txt

這是rsync很重要的特性,請依需求選擇。

常用選項總覽

rsync有許多選項,以下是常用且實用的部分:

選項說明
-a歸檔模式(遞迴、保留屬性)
-v顯示詳細傳輸內容
-n僅顯示預期操作,不實際執行(模擬測試)
--progress顯示進度條
--delete刪除目標端不存在於來源的檔案

執行前先預覽即將執行內容

若想先確認同步內容,可用-n--dry-run選項:

rsync -av --dry-run /home/user/documents/ /mnt/backup/

這樣可避免誤操作造成檔案損失。

隱藏檔案處理方式

rsync會自動包含「.」開頭的隱藏檔案,可一併同步設定檔與環境資訊,非常方便。

4. 與遠端伺服器同步

利用SSH遠端同步rsync

rsync一大優點是可經由SSH安全通道與遠端主機同步檔案,保證資料安全傳輸。

基本語法如下:

rsync -avz 來源 user@遠端IP或主機名稱:目標路徑

例如將本地/home/user/documents/同步到遠端/var/www/backup/

rsync -avz /home/user/documents/ user@example.com:/var/www/backup/
  • -z選項可壓縮傳輸,適用頻寬有限情境。
  • user@host指定SSH帳號及主機。

首次連線與金鑰認證設定

第一次連線時會提示確認主機指紋,確認無誤請輸入「yes」。

若常用rsync,建議設定SSH金鑰認證免密碼自動登入:

  1. 在本地產生SSH金鑰(若尚未建立):
ssh-keygen -t rsa
  1. 將金鑰傳到遠端主機:
ssh-copy-id user@example.com

此後即可免密碼使用rsync。

指定SSH連接埠

如果遠端伺服器非預設22埠,請用-e選項明確指定:

rsync -avz -e "ssh -p 2222" /home/user/documents/ user@example.com:/var/www/backup/

雙向同步注意事項

rsync為單向同步工具,只能「來源→目標」。若需雙向同步,請考慮其他工具(如unison)。

5. rsync實用選項與活用範例

超越基本的rsync實用選項

rsync除了基本同步,還有許多高階實用選項。以下介紹幾個常見實務應用:

–delete:自動刪除目標端多餘檔案

此選項可讓目標端自動刪除來源端已不存在的檔案,實現完整鏡像同步。

rsync -av --delete /home/user/source/ /mnt/backup/

※ 為避免誤刪,建議先加--dry-run模擬檢查。

–exclude:排除特定檔案或目錄

如欲排除某些檔案或目錄,可用--exclude

rsync -av --exclude '*.log' --exclude 'node_modules' /project/ /backup/

可結合多種模式,自由排除不需同步的內容。

–bwlimit:頻寬限制

若不想rsync佔用過多頻寬,可用--bwlimit限制傳輸速度:

rsync -av --bwlimit=5000 /data/ user@remote:/data/

(此例為5MB/s上限)

實用範例

備份用途

rsync是輕量又高效的備份工具。以下為每日自動備份到外接硬碟的範例:

rsync -a --delete /home/user/ /media/usb/backup/

這裡利用--delete,確保完整鏡像。

結合cron自動執行

可用cron定時自動執行rsync。例如每天凌晨2點自動備份,可設定crontab如下:

0 2 * * * rsync -a /home/user/ /mnt/backup/ >> /var/log/rsync.log 2>&1

大幅提升伺服器自動化管理效率。

rsync兼具彈性與效率

rsync最大魅力就是強大的選項彈性與高效的傳輸效率。無論單純複製還是進階同步,都能以安全、快速方式滿足各種需求。

6. GUI工具「Grsync」介紹

適合不熟指令列的使用者

rsync功能強大,但主要以終端機操作為主。對Linux新手或偏好視覺化操作者,可能會覺得不易上手。

這時可善用Grsync這套圖形介面工具,它在底層呼叫rsync,但可用GUI簡單設定與執行同步任務。

Grsync在Ubuntu的安裝方式

Ubuntu上可用APT輕鬆安裝Grsync:

sudo apt update
sudo apt install grsync

安裝後,於應用程式清單中找到「Grsync」即可啟動。

Grsync基本操作方式

Grsync介面直觀,可設定以下項目:

  • 來源與目標路徑輸入
  • 支援「遞迴複製」、「保留檔案屬性」、「刪除選項」等rsync主要功能的勾選框
  • 排除模式設定
  • 模擬執行(Dry run)按鈕

設定完成後點擊「執行」,後台會以rsync執行同步。

利用設定檔簡化定期任務

Grsync可儲存多組「設定檔(Profile)」,管理多個備份或同步需求非常方便。

例如:

  • Profile 1:備份到USB隨身碟
  • Profile 2:同步NAS
  • Profile 3:外部伺服器鏡像

能輕鬆於GUI上切換。

Grsync優缺點比較

優點缺點
操作直觀,無需指令經驗某些進階選項無法在GUI設定
可邊看說明邊勾選功能資訊顯示較抽象,資深用戶可能覺得不夠詳細
易於安全上手(有模擬執行功能)彈性仍不及純指令操作

7. 常見問題與對應解法

檔案權限未正確保留

問題:複製到目標端後,檔案擁有者或權限發生變化。
原因:以一般使用者執行rsync,或未加上-a(歸檔模式)選項。
解法

  • 請務必加入-a選項。
  • 如需完整權限,請用sudo執行。
sudo rsync -a /source/ /destination/

符號連結未正確處理

問題:連結檔未複製,或被複製為實體檔案。
原因:預設rsync會維持連結型態,不同選項會影響行為。
解法

  • 維持符號連結:請用-a
  • 如要複製連結所指的實體檔案:請加--copy-links

出現「Permission denied」訊息

問題:部分檔案或資料夾同步時發生「Permission denied」錯誤。
原因:權限不足導致無法存取。
解法

  • sudo執行rsync。
  • 檢查來源及目標資料夾權限,必要時修正。
sudo rsync -a /source/ /destination/

「rsync: connection unexpectedly closed」(遠端同步)

問題:遠端伺服器連線過程中出現錯誤,同步中斷。
原因:SSH設定不正確、路徑錯誤、遠端權限不足等。
解法

  • 先單獨測試SSH連線:ssh user@host
  • 檢查目標路徑是否正確。
  • 確認防火牆或連接埠設定。

「Argument list too long」

問題:同步超大量檔案資料夾時出現錯誤。
原因:指令列引數過長超出系統限制。
解法

  • --exclude--include縮小同步範圍。
  • 分批次目錄進行多次同步。

8. FAQ(常見問答)

以下彙整Ubuntu上rsync的常見疑問,針對新手容易遇到的重點問題做簡明解說:

Q1. 如何保留檔案擁有者及權限?

A1. 請使用-a(歸檔模式)選項,可完整保留權限、時間戳、擁有者、群組等資訊。系統設定備份建議一定要加此選項。

rsync -a /etc/ /backup/etc/

Q2. 要排除特定檔案或資料夾同步怎麼做?

A2. 利用--exclude,可指定模式排除。例如:

rsync -av --exclude '*.log' /project/ /backup/project/

也支援萬用字元,node_modules.git等資料夾也能輕鬆排除。

Q3. 如何限制rsync的網路頻寬?

A3. --bwlimit選項可限制傳輸速度,單位為KB/s。

rsync -av --bwlimit=5000 /data/ user@remote:/data/

本例為5MB/s上限,適合避免占用全部頻寬。

Q4. 執行前想確認會做哪些動作?

A4. --dry-run-n可僅顯示預期同步內容,不實際執行:

rsync -av --dry-run /source/ /destination/

初次執行或有--delete時特別建議先檢查。

Q5. 隱藏檔(點開頭)也會同步嗎?

A5. 會的,rsync預設會一併處理以「.」開頭的檔案。如果想排除,請用--exclude '.*'等排除規則。

Q6. rsync和scp有何差別?

A6. scp適合單純檔案傳輸,每次都全量複製;rsync支援差異同步、斷點續傳、適合備份與鏡像,功能更進階也更有效率。

9. 結論

本文詳細說明了在Ubuntu上安裝與運用rsync,從基本語法、遠端同步、進階選項、GUI工具Grsync,到故障排除與FAQ,內容全面豐富。

rsync的特色總結

  • 僅同步差異內容,節省頻寬及時間。
  • 可完整保留權限與擁有者,適合備份與鏡像。
  • 支援SSH安全遠端同步
  • 選項豐富,可靈活排除、限制頻寬等。
  • 支援結合cron自動排程
  • 圖形工具Grsync讓新手也可安心操作。

rsync是Linux用戶必備工具

在Ubuntu等Linux系統,rsync可說是管理檔案、備份與同步的基礎工具。只要善用本文介紹內容,無論新手或進階用戶,都能輕鬆、安全又高效率地發揮rsync威力。

雖然rsync語法簡單,但選項強大且彈性,熟練後可提升專業檔案管理水準。建議從基本學起,再依需求逐步活用進階功能,找到最適合自己情境的使用方式。

 

侍エンジニア塾