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」訊息,請按照以下步驟安裝:
- 更新套件資訊:
sudo apt update
- 安裝rsync:
sudo apt install rsync
- 安裝完成後再次確認版本:
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金鑰認證免密碼自動登入:
- 在本地產生SSH金鑰(若尚未建立):
ssh-keygen -t rsa
- 將金鑰傳到遠端主機:
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語法簡單,但選項強大且彈性,熟練後可提升專業檔案管理水準。建議從基本學起,再依需求逐步活用進階功能,找到最適合自己情境的使用方式。