程式狂想筆記

一個攻城師奮鬥史

0%

scp,rsync,winscp使用小記和同部備份方法

最近想同步檔案道別台機器
想比較 scp,rsync,winscp 有什麼同步的方法
比較一下差異

scp

之前有寫過這篇scp 跟 sftp 是不一樣的東西 | 程式狂想筆記
所以這個沒有辦法跟 rysnc 一樣判斷同步
但有加密功能
使用也很簡單,不需要先 ssh 別台主機
直接 command 使用scp xxx@ooo:xxx fff@bbb:xxx
不過路徑可能要清楚是哪邊

複製資料夾除了用*方式
但用星號無法多層
要使用-r Recursively copy entire directories
scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/
shell - How to copy a folder from remote to local using scp? - Stack Overflow

rsync

跟 scp 差別預設沒有加密,但還是有辦法做加密。
剛看了一下別的文章
2004 年後預設說有做 ssh 加密
難怪我有看到有些說預設有 ssh 加密,有些沒有…
可參考Rsync -e option to ssh - Unix & Linux Stack Exchange

Assuming you’re not needing to consider the rsync protocol itself, this depends on the compilation options used for your version of rsync.
It used to be the case that rsync used the rsh protocol by default (unless the build-time default had been changed), but the build-time default changed to ssh in 2004.
If you’re in doubt, start the rsync process transferring a relatively large file (or collection of files), and in another terminal run ps -ef | grep [r]sync. This will show you whether or not you’re using ssh for a transport. Here’s an example from one of my servers, which clearly shows the ssh transport:

1
2
root     28057 27173  1 09:48 pts/4    00:00:00 rsync -avHP --dry-run /home roaima@otherserver:
root 28058 28057 0 09:48 pts/4 00:00:00 ssh -l roaima otherserver rsync --server -vnlHogDtpre.iLsfx --partial . .

Finally, be aware that the compilation default can be overridden with the RSYNC_RSH environment variable. (See the man page for further details.)

有時間在驗證上面到底有沒有加密

他有很多參數
目前我常用是用-av,不過是先前前輩給我用的設定
我還沒搞清楚

1
2
3
4
5
6

-a, --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rlptgoD
-v, --verbose 詳細模式輸出
--delete 刪除那些目標目錄中有而源目錄中沒有的多餘文件。這個是 rsync 做增量方式的全備份的最佳選擇方案!!!!!!
簡單說加入`--delete`就是本基做刪除動作,但是遠端就會**做刪除**
反之,沒家的話就不會。

詳細記紹可以看
SCP 和 Rsync 遠程拷貝的幾個技巧 - 散盡浮華 - 博客園 備份圖
SSH,SCP,rsync,sftp - 简书 備份圖

不過 window 就算有裝 git bash,但預設沒有 rsync 可以用
所以我才會找找有沒有類似在 window winscp 做同步更新方法
當然我也有找到 window 能用 rsync
Chocolatey Gallery | cwRsync (Free Edition) 5.5.0.20190204
Sync-Rsync - Visual Studio Marketplace

2020-04-23

1
2
3
4
5
rsync –av /etc server1:/tmp # 複製目錄和目錄下文件
rsync –av /etc/ server1:/tmp # 只複製目錄下文件
rsync -avh myfile.gz /home/pi/tmp/ # 複製檔案到資料夾
rsync -avzh pi@192.168.1.12:/mypath/myfile.gz /mybackup/
rsync -avzh --bwlimit=100K pi@192.168.1.12:/mypath/myfile.gz /mybackup/ # --bwlimit 限制頻寬

-n 模擬複製過程
-v 顯示詳細過程
-r 遞歸複製目錄樹
-p 保留權限
-t 保留時間戳
-g 保留組信息
-o 保留所有者信息
-l 將軟鏈接文件本身進行複製(默認)
-L 將軟鏈接文件指向的文件複製
-a 存檔,相當於–rlptgoD,但不保留ACL(-A)和SELinux屬性(-X)
–delete 如果沒有來源檔案只有新增、沒有減少的話,它就跟一般的複製
-h:將數字以比較容易閱讀的格式輸出。

WinSCP

內建也有做同步功能
Scripting and Task Automation :: WinSCP
Synchronize Dialog :: WinSCP

其他參考來源:
SCP 和 Rsync 远程拷贝的几个技巧 - 散尽浮华 - 博客园
使用 WinSCP 进行简单代码文件同步 - leestar54 - 博客园
Synchronize Dialog :: WinSCP
Scripting and Task Automation :: WinSCP
厭世人生的 MIS 記事本: rsync 參數 用法
SSH,SCP,rsync,sftp - 简书
backup - Do you need -e ssh for rsync? - Server Fault
詳全文_資料備份同步工具簡介— rsync
rsync 備份 | Tsung’s Blog
Rsync 備份本地及遠端目錄

How to Remove User and Hostname in Terminal Prompt - Make Tech Easier

date: 2019-03-31

最近在 window 使用 rsync
結果發現他還是全部檔案會傳上去
Google 一下,發現要加--modify-window=1才能解決全部上傳問題我自己電腦測試失敗…
但發現可能是我在 linux 做chmod o+rx -R .關係,因為剛開始複製是750
晚點看看--chmod=755能否解決?

但原始資料來源,做 rsync 好像正常…
有看到用--size-only但這也不是最好的同步方式
難免改檔案大小都一樣

目前我有一隻 window->linux

1
rsync -vr --progress --chmod=755 ./local_path/ user@ip:/path

參考來源: