2009-10-08 8 views
5

मैं एक साधारण प्रोग्राम लिख रहा हूं जिसका उपयोग एफ़टीपी में फ़ाइलों को सिंक्रनाइज़ करने के लिए किया जाता है। मैं यह जांचने में सक्षम होना चाहता हूं कि फ़ाइल का स्थानीय संस्करण दूरस्थ संस्करण से अलग है या नहीं, इसलिए मैं बता सकता हूं कि फ़ाइल को स्थानांतरित करने की आवश्यकता है या नहीं। मैं फ़ाइल आकार की जांच कर सकता हूं, लेकिन यह 100% विश्वसनीय नहीं है क्योंकि जाहिर है कि दो फाइलों के लिए एक ही आकार होना संभव है लेकिन इसमें अलग-अलग डेटा हैं। फ़ाइलों को संशोधित दिनांक/समय भी विश्वसनीय नहीं है क्योंकि उपयोगकर्ता की कंप्यूटर तिथि गलत सेट की जा सकती है।मैं कैसे बता सकता हूं कि एक एफ़टीपी पर एक फाइल स्थानीय फाइल के समान है जो वास्तव में फाइल डाउनलोड कर रही है?

क्या कोई अन्य तरीका यह बताने का कोई अन्य तरीका है कि कोई स्थानीय फ़ाइल और एफ़टीपी पर एक फ़ाइल समान है या नहीं?

उत्तर

5

कोई सामान्य तरीका नहीं है। यदि FTP साइट में चेकसम फ़ाइल शामिल है, तो आप इसे डाउनलोड कर सकते हैं (जो चेकसम बहुत छोटा है) और फिर देखें कि चेकसम मिलान करते हैं या नहीं। लेकिन निश्चित रूप से, यह ftp साइट के मालिक पर निर्भर करता है जो चेकसम फ़ाइल बनाता है और इसे अद्यतित रखता है।

अन्य तो, आप एसओएल हैं।

1

चेकसम का उपयोग करें। आप दोनों फाइलों के md5 (या sha1, sha2 आदि) हैश उत्पन्न करते हैं, और यदि फ़ाइलें समान हैं, तो हैश समान होंगे।

+3

यह डाउनलोड के बिना कैसे काम करता है? –

+0

ठीक है, यह काम करता है अगर आपके पास FTP का नियंत्रण है, और फ़ाइल अपलोड होने पर चेकसम उत्पन्न कर सकता है ... यह तकनीकी रूप से अभी भी एक डाउनलोड है, मुझे लगता है, लेकिन यह एक मनमानी आकार की फ़ाइल का डाउनलोड नहीं है। – neminem

2

यदि सर्वर सादा पुराना एफ़टीपी है, तो आप आकार और टाइमस्टैम्प की जांच करने से बेहतर नहीं कर सकते हैं।

एफ़टीपी के पास फाइलों के हैंश/चेकसम देने के लिए कोई तंत्र नहीं है, इसलिए आपको एक विशेष "लिस्टिंग फ़ाइल" रखने जैसी कुछ करने की आवश्यकता होगी जिसमें सभी फ़ाइल नाम और हैंश हैं, या HTTP के माध्यम से एक अलग अनुरोध कर रहे हैं, या कुछ अन्य प्रोटोकॉल।

आदर्श रूप से, आपको एफ़टीपी का उपयोग नहीं करना चाहिए, यह वास्तव में एक अप्रचलित प्रोटोकॉल है। यदि आपके पास सिस्टम का नियंत्रण है, तो आप rsync या ऐसा कुछ उपयोग कर सकते हैं।

1

आईईटीएफ ने एमडी 5 और एमएमडी 5 जैसे नए एफ़टीपी कमांड जोड़कर इसे हासिल करने का प्रयास किया।

http://www.faqs.org/rfcs/ftp-rfcs.html

हालांकि, कोई सब एफ़टीपी विक्रेताओं उन्हें समर्थन करते हैं। तो आपके पास यह देखने के लिए कि क्या यह MD5/MMD5 का समर्थन करता है, यह देखने के लिए आपके द्वारा एप्लिकेशन एक्टिविटी एफ़टीपी सर्वर पर एक जांच होगी। यदि नहीं, तो आप उपरोक्त वर्णित कार्यवाही उठा सकते हैं।

0

जब भी अपने ग्राहक अपलोड फ़ाइलों FTP सर्वर पर, अपने हैश प्रत्येक फ़ाइल नक्शा और क्लाइंट कंप्यूटर पर स्थानीय रूप से संग्रहीत (या इसे कहीं भी स्टोर आप बाद में, प्रारूप कोई फर्क नहीं पड़ता उपयोग कर सकते हैं, एक xml फ़ाइल हो सकता है, सादा पाठ, जब तक आप कुंजी/मूल्य जोड़े को पुनः प्राप्त कर सकते हैं)। फिर जब आप फ़ाइलों को दोबारा अपलोड करते हैं तो बस अपनी बनाई गई हैश तालिका के साथ स्थानीय फाइलों की जांच करें, यदि यह अलग है तो फ़ाइल अपलोड करें। इस तरह आपको चेकसम फ़ाइल को बनाए रखने के लिए सर्वर पर भरोसा नहीं करना पड़ता है और आपको FileSystemWatcher ईवेंट की निगरानी करने के लिए कोई प्रक्रिया चलाने की आवश्यकता नहीं है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^