mysync - 單向同步軟件
項(xiàng)目介紹
這是本人編寫的基于TLS耽梅、RSA龟糕、AES256加密的單向同步軟件徐紧,方向是從客戶端同步到服務(wù)端。同步文件時會自動跳過第一級目錄中以.
或_
開頭的文件和目錄帘营。
服務(wù)器和客戶端的通訊使用TLS
安全連接進(jìn)行RPC
調(diào)用。
源代碼地址
百度網(wǎng)盤下載
https://pan.baidu.com/s/103cgeSFOmPZFvVZOQYdDPw
算法說明
- 首先由客戶端獲取本地目錄的文件列表逐哈,并且逐一計算各個文件的
MD5
值芬迄,然后把文件名、MD5
列表發(fā)送到服務(wù)器昂秃。 - 接著服務(wù)器也計算服務(wù)器上的文件禀梳、
MD5
列表,根據(jù)各個文件的MD5
與客戶端上傳的列表進(jìn)行比較肠骆,找出被客戶端修改算途、新增、刪除了的文件蚀腿,然后刪除已被客戶端刪除的文件郊艘,并且向客戶端返回修改、新增文件列表唯咬。 - 最后客戶端把已經(jīng)修改纱注、新增的文件壓縮打包后上傳到服務(wù)器,服務(wù)器解開壓縮包胆胰,更新服務(wù)器上的文件夾內(nèi)容狞贱。
系統(tǒng)構(gòu)架
本軟件有4個程序構(gòu)成:
-
mysyncd
- 服務(wù)端程序,可以使用參數(shù)改變端口蜀涨,查詢參數(shù):mysyncd -h
瞎嬉。 -
mysync
- 客戶端程序。 -
genca
- 生成自簽名的TLS
證書對servername-cert.pem厚柳、servername-key.pem
氧枣,用法參考:genca -h
。 -
genkey
- 生成一對RSA2048密鑰name.pub
别垮、name.key
便监,用法:genkey -k name
。
配置文件路徑
- 服務(wù)器:在
Linux
系統(tǒng)上是:HOME/config/mysyncd/
碳想;在Windows
系統(tǒng)上是:/path/to/mysyncd/config/mysyncd/
- 客戶端:在需要同步的目錄中的子目錄
_mysync
配置TLS
證書:
- 用
genca
程序生成servername-cert.pem烧董、servername-key.pem
。 - 服務(wù)端:把
servername-cert.pem胧奔、servername-key.pem
復(fù)制到config/mysyncd/rootcas
逊移,改名為cert.pem、key.pem
龙填; - 客戶端:把
servername-cert.pem
復(fù)制到_mysync
中胳泉,改名為cert.pem
拐叉。
配置服務(wù)器mysyncd
把客戶端RSA
公鑰mykey.pub
復(fù)制到config/mysyncd
目錄中,編輯對應(yīng)的mykey.json
文件指明同步目錄,
注意JSON
文件和.pub
文件的名字是一一對應(yīng)的扇商。mykey
名字可以改變凤瘦,和客戶端的配置相對應(yīng)。默認(rèn)綁定地址為":6080"
,可使用mysyncd
程序的參數(shù)host
改變钳吟,參數(shù)格式:-host IP:PORT
。
服務(wù)端可以配置多對mykey.pub窘拯、mykey.json
配置客戶端mysync
把客戶端的RSA私鑰mykey.key
復(fù)制到_mysync
目錄中红且,編輯配置文件config.json
指明
服務(wù)器地址host
,標(biāo)識符key
涤姊,標(biāo)識符必須和服務(wù)器上的.pub
暇番、.json
文件前面的名字以及本地的私鑰文件.key
文件的名字相同。
服務(wù)端配置目錄結(jié)構(gòu)
config/mysyncd/
├── mykey.json
├── mykey.pub
└── rootcas
├── cert.pem
└── key.pem
客戶端配置文件結(jié)構(gòu)
_mysync/
├── cert.pem
├── config.json
└── mykey.key