[教學] 反重覆的方法(離線或間中版)

反重覆, 簡稱DEDUP, 是其中一個使人頭痛的題目.

首先, DEDUP是甚麼? DEDUP主要找相同名字,相同容量的檔案. 不過,從NIST角度而言,做法不穩妥. 你需要對比當中的"特徵"先得. 如果兩個檔案在SHA-256下的"特徵"是e12e115acf4552b2568b55e93cbd39394c4ef81c82447fafc997882a02d23677 (檔案內容是ABCD, 7-ZIP在某些編碼下為E12E115ACF4552B2568B55E93CBD39394C4EF81C82447FAFC997882A02D23677, 不信你可以自己開一個試), 你可以選擇捨走其中一個.

我自己聽過不同方法, 例如OPENDEDUP(SDFS), 用WINDOWS SERVER 2012或以上, 雖然有效,而且第一步可以找出來了. 不過當中改動太大或依賴指定軟件. 因而不好使人聽到. 其中一個比較有效方法,主要用7-ZIP 16.02中既SHA-256完整性檢測功能(我相信這樣的做法應該改動最少,而且有源碼可查, 可商用), 有特殊需要用戶可以用JACKSUM中既SHA-512達到同樣目的. 當然你可以自己付鈔買TREESIZE PERSONNEL, 但只有最惡劣情況下你先好買.

其中一個做法例如在CMD中打7z h -scrcSHA256 C:\abc\ > resultOfabc.log, 運行完畢後你自己用NOTEPAD++之類方法看誰是真的相同,二撰其一.  當然, 當中方法要你自己想想, 但有一個提示, 我用的"特徵"碼長度為64,[0-9a-fA-F]{64}, 我相信熟手會清楚一點.


詳細內容可閱: http://csrc.nist.gov/groups/STM/ ... 140sp/140sp2604.pdf 當中說FIPS 140-2的要求, 最低要求要用SHA-1確定完整性.