sftp - केवल फ़ोल्डर से फ़ाइलों की प्रतिलिपि कैसे करें जो गंतव्य फ़ोल्डर में मौजूद नहीं हैं


19

मुझे आश्चर्य हो रहा है कि क्या यह getफाइलों के साथ संभव है sftp, लेकिन गंतव्य फ़ोल्डर में पहले से मौजूद फ़ाइलों को फिर से डाउनलोड करने से रोकें?

जवाबों:


20

sftpसीमित क्षमताएं हैं। फिर भी, getकमांड में एक विकल्प है जो चाल कर सकता है:get -a आंशिक डाउनलोड पूरा करता है, इसलिए यदि कोई फ़ाइल क्लाइंट पर पहले से मौजूद है और कम से कम सर्वर पर फ़ाइल जितनी बड़ी है, तो वह डाउनलोड नहीं होगी। यदि फ़ाइल मौजूद है, लेकिन छोटी है, तो फ़ाइल का अंत स्थानांतरित हो जाएगा, जो स्थानीय फ़ाइल एक बाधित डाउनलोड का उत्पाद है, तो यह समझ में आता है।

SFTP पर जटिल चीजों को करने का सबसे आसान तरीका SSHFS का उपयोग करना है । SSHFS एक फाइलसिस्टम है जो SFTP का उपयोग एक दूरस्थ फाइलसिस्टम को एक स्थानीय फाइलिसेम के रूप में प्रकट करने के लिए करता है। क्लाइंट पर, SSHFS को FUSE की आवश्यकता होती है , जो अधिकांश आधुनिक यूनियनों पर उपलब्ध है। सर्वर पर, SSHFS को SFTP की आवश्यकता होती है; यदि सर्वर SFTP की अनुमति देता है तो आप इसके साथ SSHFS का उपयोग कर सकते हैं।

mkdir server
sshfs server.example.com:/ server
rsync -a server/remote/path /local/path/
fusermount -u server

ध्यान दें कि SSHFS पर rsync डेल्टा हस्तांतरण एल्गोरिथ्म का लाभ नहीं उठा सकता है, क्योंकि यह दूरस्थ तरफ आंशिक चेकसमों की गणना करने में असमर्थ है। यदि आप संशोधित की गई फ़ाइलों को सिंक्रनाइज़ कर रहे हैं तो एक बार डाउनलोड करने के लिए यह अप्रासंगिक है। संशोधित फ़ाइलों के कुशल सिंक्रनाइज़ेशन के लिए, उपयोग करें rsync -a server:/remote/path /local/path/, लेकिन इसके लिए SSH शेल एक्सेस की आवश्यकता होती है, न कि केवल SFTP एक्सेस की। शेल का उपयोग rsync कमांड के लिए प्रतिबंधित किया जा सकता है।


7

आप कमांड के -aलिए ध्वज का उपयोग कर सकते हैं get:

$ sftp example.com
sftp> get -a hello.txt

आप निर्दिष्ट कर सकते हैं * निश्चित रूप से पूरी निर्देशिका डाउनलोड लिए ।

हालांकि, कुछ कैविएट हैं।

  • यह OS X पर काम नहीं करता है। यह अन्य प्रणालियों पर काम नहीं कर सकता है। मैंने इसे Ubuntu 15.04 पर परीक्षण किया है।
  • विकल्प बाधित डाउनलोड को फिर से शुरू करने के लिए है। यदि आपकी फ़ाइल बदल गई है, तो परिणाम wil एक दूषित डाउनलोड हो जाएगा।

एक बेहतर विकल्प का उपयोग किया जाएगा rsync:

rsync example.com:hello.txt

यह हमेशा आपको फ़ाइल देगा क्योंकि यह सर्वर पर है, केवल स्थानीय और रिमोट कॉपी के बीच अंतर को स्थानांतरित करना अगर वे अलग-अलग हैं, और यह सार्वभौमिक रूप से उपलब्ध है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.