2011-04-15 32 views
0

我正在編寫一個程序來執行備份,它將具有同步功能。它將類似於微軟的SyncToy,但它會有更多的靈活性和「羣組」備份選項等。如何判斷一個文件夾中的文件是否與另一個文件夾中的文件相同,但已被重命名

我正在使用VB.Net 2010編寫程序。當文件的唯一區別是名稱時,我需要幫助的問題是源文件與目標文件的高效比較。 (使用同步文件夾的「貢獻」方法)

換句話說,如果我有一個備份文件夾,其中包含大量備份文件和來自主源文件夾的文件夾,並且我更改了其中一個文件在主文件夾中,但除此之外別無它物,我怎麼知道重命名的文件與目標文件夾中的原始文件相同?在這種情況下,我想重命名目標文件爲新名稱被賦予了主文件夾,而不是隻複製重命名的文件到備份文件夾,並用不必要的不​​同名稱的重複文件結束了。

感謝您的幫助,

拉爾夫·馬lph

回答

0

如果您想要比較兩個文件,您必須通過讀取它們並比較其內容的散列或通過逐字節比較來實際比較其內容。

+0

感謝您的信息。我有一種防火牆,但我需要的是一種快速有效的方式來做到這一點。當源和備份之間的唯一更改是文件重命名時,必須有一種方法或SyncToy需要幾個小時才能運行,並且需要很長時間才能確定。到目前爲止,我可以查看源文件然後掃描目標。對於任何大小相同的文件,然後檢查哈希,然後做字節到字節比較等,但如果我有1000個文件的源代碼和1000個目標可能會相當費時,因爲我相信,這將是我必須做的1,000,000比較。 – 2011-04-15 15:12:31

1

這是最聰明的做法同步,同步應該在4個大步驟來完成在目標文件夾和源文件夾1 - 比較的文件(可以通過先比較其尺寸有所緩解這個)2,重命名相同文件並將它們根據源文件夾移動到相應的子文件夾中(無需從源文件夾複製它們)3-刪除僅存在於目標文件夾中的文件,4僅存在於目標文件夾中的文件源文件夾

注:無需進行繁瑣的跟蹤,不需要龐大的日誌文件來記錄你的一舉一動都在源文件夾製作,無需複製不同的名字相同的文件,無需複製相同的文件不同的子文件夾,所有的exis婷同步程序做這些浪費時間的活動,沒有

的答案是:有檢測完全相同的文件很多有效的方案,你可以在你的新的同步程序使用一個開源一個

相關問題