rsync 的預設值是傳整個檔案,不是 delta

剛好最近工作上需要透過 4G 網路傳大檔案,但希望大檔案傳到一半斷掉後可以續傳,而不要浪費頻寬整個重傳,所以查了資料並且測了一些東西...

其中一個比較特別的是發現 rsync 的預設是傳整個檔案 (當檔案有變化時),而不是傳 delta (有變更的部份),不過還好,可以透過指令強制使用 delta。

在「Does rsync --inplace write to the entire file, or just to the parts that need to be updated? (for btrfs+rsync backups)」這邊有提到幾個需要設定的指令。

首先是標題就有提到的 --inplace,在 manpage 裡面有提到是直接更新檔案,而非建立一個新檔案再 rename,這樣做的缺點是其他的應用程式可能會讀到改到一半的檔案:

update destination files in-place

另外一個提到的是 --no-whole-file,這個要看 --whole-file 的說明來理解,後者就是不開 delta:

copy files whole (w/o delta-xfer algorithm)

第三個是 -c,強制使用 checksum 比對:

skip based on checksum, not mod-time & size

不過我的應用裡面不太想管這個,就沒設定 -c 了,基本上是靠 ssh 的保護,不會有收到錯誤封包的問題。

整體來說,這個方法對兩邊的機器都比較吃資源,而且會遇到應用程式在還在傳輸時讀到檔案的問題,但如果可以克服,而且目標是省頻寬的話,算是個還不錯的方法...

印度的免費 4G...

印度最富有的企業家決定提供免費的 4G 網路讓更多人可以上網:「India's richest man offers free 4G to one billion people」:

India's richest man is rolling out a $20 billion mobile network that could bring lightning-fast Internet to hundreds of millions of people.

到 2016 年底:

Indians will be able to use Jio for free until the end of 2016, and pay as little as 149 rupees ($2.25) a month for data after that.

唔,為什麼突然想到 Samuel L. Jackson 呢...

手機網路的不安全性...

在整理舊文章的時候看到有人對 GSM 網路以及 3G/LTE 網路的安全性進行分析:「On cellular encryption」。

2G 網路 (GSM 網路) 已經是不安全的架構,主因是 30 年前可用的技術受限,加上當時的美國法令嚴格管制加密技術出口,所以整個通訊協定放了一堆後門...

3G 網路建立時 AES 也還沒出來 (1998 年 NTT DoCoMo 建立第一個非商用性質的 3G 網路),當時選用的 KASUMI cipher 後來被打趴好幾次...

4G/LTE 用的技術就更新了,當然是另外的故事,不過還是把手機網路當作不安全的媒介會比較好...