在 Linux 中要複製檔案我們會使用 cp 指令,如果是不同裝置間則是使用 scp ,其實還有更強大的 rsync 指令可以使用。
rsync 指令是專門用來同步檔案的,它只會複製檔案有變更的部分,而不是複製所有檔案,可以節省許多時間。
常用參數:
註:下面的指令和上面的指令只差在「來源路徑」後面多了一個「/」,但是會把「來源資料夾」整個放入「目標路徑」中,等於多了一層資料夾:
(-az 代表「存檔模式」和「壓縮檔案」)
然後再輸入密碼即可。
當然,如果要反過來將本機的 rsync-test 資料夾同步到遠端 192.168.10.11 主機上 ruyut 使用者的家目錄下的 rsync-test 資料夾也是沒有問題:
(-az 代表「存檔模式」和「壓縮檔案」)
這裡使用遠端主機是透過 ssh 功能達成,所以需要先開啟 ssh 功能。另外如果 ssh port 不是預設的 22 ,可以使用 -e 的方式達成(請自行替換 port):
rsync 指令是專門用來同步檔案的,它只會複製檔案有變更的部分,而不是複製所有檔案,可以節省許多時間。
基本語法
rsync [可選參數] 來源路徑 目標路徑
常用參數:
- -r: 循環歷遍所有資料夾和檔案
- -l: 複製系統連結(symlinks)
- -p: 保留權限
- -t: 保留修改時間
- -g: 保留使用者群組(group)
- -o: 保留使用者(限超級管理員)
- -D: 保留特殊檔案(限超級管理員)
- -a: 存檔模式,等於同時附加上面的 rlptgoD 參數
- -z: 壓縮檔案
- -q: 安靜模式,不顯示訊息(除非錯誤)
- -v: 顯示詳細訊息
- -R: 使用相對路徑
- -d: 只有資料夾但不歷遍內部檔案和資料夾
- -e: 指定要使用的遠端的 shell (文末會示範)
基礎示範
將 rsync-test 資料夾內的所有檔案和資料夾同步到 rsync-test-2 資料夾內,並且保留權限
rsync -rp rsync-test/ rsync-test-2
註:下面的指令和上面的指令只差在「來源路徑」後面多了一個「/」,但是會把「來源資料夾」整個放入「目標路徑」中,等於多了一層資料夾:
rsync -rp rsync-test rsync-test-2
跨 linux 同步檔案示範
假設有一個遠端 linux , 使用者名稱為 ruyut, ip 為 192.168.10.2 ,要將該使用者家目錄下的 rsync-test 資料夾複製到本機當前目錄下(可以直接使用 . 代替),指令為:(-az 代表「存檔模式」和「壓縮檔案」)
rsync -az ruyut@192.168.10.2:~/rsync-test .
然後再輸入密碼即可。
當然,如果要反過來將本機的 rsync-test 資料夾同步到遠端 192.168.10.11 主機上 ruyut 使用者的家目錄下的 rsync-test 資料夾也是沒有問題:
(-az 代表「存檔模式」和「壓縮檔案」)
rsync -az rsync-test ruyut@192.168.10.11:~/rsync-test
這裡使用遠端主機是透過 ssh 功能達成,所以需要先開啟 ssh 功能。另外如果 ssh port 不是預設的 22 ,可以使用 -e 的方式達成(請自行替換 port):
rsync -az rsync-test -e'ssh -p 22' ruyut@192.168.10.11:~/rsync-test
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com