2010-01-29 59 views
1

我正在研究一個Python腳本,它會將一堆文件上傳到FTP站點。要檢查文件是否已更改,我比較文件大小。問題是,我上傳的文件有\ r \ n行結尾,但通過FTP(ascii模式到Linux機器)轉換爲\ n行尾。很明顯,我在這個過程中丟失了一堆字節,所以我無法再比較文件大小。如何使用ascii比較Windows和Linux上的文件大小?

我不知道這裏是最好的生活方式。在檢查文件大小時,從\ r \ n動態轉換爲\ n?以二進制模式上傳一切?停止比較文件大小?

回答

1

我不會立足於基於文件大小的文件是否已經改變了你的支票。由於它是ascii文本,文件可能已經改變並且仍然具有完全相同的字節數。

1

用文件大小是一個壞主意,除非如果他們改變,他們只能生長(通常情況並非如此,不過,除非是日誌文件或東西)。

一種選擇是跟蹤校驗和工具(md5sum通常使用什麼),每個文件(該文件可能被上傳到FTP服務器以及)。如果校驗和與主校驗和文件中的校驗和相匹配,則沒有任何更改,否則上載更改的文件並更新該文件的md5sum。

+0

+1你有正確的想法,但這些天來,是絕對不推薦使用MD5(也不SHA-1了,對於這個問題)。至少使用SHA-256。 –

+1

我認爲這取決於。作爲一個簡單的校驗和,CRC是有爭議的充分或太弱,而MD5和SHA-1絕對足夠好。對於加密安全散列,是的,準備好現在至少使用SHA-2系列散列並隨着時間的推移升級它。 – ephemient