1. फ़ाइल नाम में विशेष वर्णों के साथ समस्याएँ
फ़ाइल नाम में कोई विशेष वर्ण हैं? आप जिन फ़ाइलों को इन फ़ाइलों को लिख रहे हैं, उनके आधार पर, वे आपको .
उदाहरण के लिए डॉट ( ) के साथ फ़ाइलों को उपसर्ग करने की अनुमति नहीं दे सकते ।
2. rsync संशोधन समय और webdav2 के साथ समस्याएं
मैं इस ब्लॉग पोस्ट पर आया था जहाँ एक समस्या का वर्णन किया गया है rsync
जिसमें वेबडाव 2 माउंटेड बॉक्स.कॉम निर्देशिकाओं पर फ़ाइल संशोधन समय पर नज़र रखने / लिखने में समस्या है।
समस्या माउंटेड फ़ाइल सिस्टम में इस तरह दिखाई देती है:
david@sydney:~/Pictures$ ls -l /mnt/box/bwca/08/09/IMG_3084.CR2
-rw-r--r-- 1 david david 12564061 Aug 14 16:08 /mnt/box/bwca/08/09/IMG_3084.CR2
david@sydney:~/Pictures$ ls -l 2012/08/09/IMG_3084.CR2
-rw-rw-r-- 1 david david 12564061 Aug 9 13:00 2012/08/09/IMG_3084.CR2
उसी लेख में एक वर्कअराउंड दिखाया गया है:
$ rsync -avhP --size-only --bwlimit=64 2012/08 /mnt/box/bwca/
यह उपयोग करने का एक ठीक तरीका है rsync
, लेकिन यह केवल उनके आकार के आधार पर फाइलों की तुलना कर रहा है, न कि उनके चेकसम।
3. davfs2 (WebDAV) के मुद्दे
मैं इस धागे के पार आया: dsfs2 के माध्यम से rsync? sourceforge पर WebDAV (davfs) फोरम पर। कोई व्यक्ति ऐसी ही स्थिति के बारे में पूछताछ कर रहा था, जहां वे WebDAV का उपयोग ऑनलाइन भंडारण प्रदाता को माउंट करने के लिए करना चाहते थे और WebDAV के माध्यम से माउंटेड स्टोरेज में rsync का प्रदर्शन करते थे। यह WebDAV के डेवलपर्स (वर्नर बॉमन) में से एक को इस विषय के बारे में कहना था ।
वर्नर की प्रतिक्रिया का अंश
davfs2 केवल पूर्ण फ़ाइलों को अपलोड करेगा। यह वृद्धिशील सामान rsync आमतौर पर नहीं करता है, और यह rsync को बहुत कुशल बनाता है।
davfs2 डिस्क पर एक स्थानीय कैश का उपयोग करता है। यह इसे और अधिक प्रतिक्रियाशील बना देगा और आपके आवेदन को इससे भी लाभ होना चाहिए। लेकिन इसके लिए स्थानीय डिस्क स्थान की आवश्यकता है। आपको बड़े कैश आकार के लिए अनुमति देनी चाहिए, इसलिए rsync अपना अधिकांश काम स्थानीय कैश के साथ कर सकता है, और davfs2 पृष्ठभूमि में अधिकांश फ़ाइलों को अपलोड करेगा, जब rsync पहले ही समाप्त हो चुका है।
वर्नर निम्नलिखित सुझाव देने के लिए आगे बढ़ता है
यह इस मामले में एक नुकसान हो सकता है। जब rsync दूरस्थ होस्ट पर फ़ाइल पढ़ता है, तो उसे पहले davfs2 द्वारा स्थानीय कैश में स्थानांतरित किया जाना चाहिए (यदि यह पहले से ही नहीं है)। इससे प्रक्रिया वास्तव में और अनावश्यक धीमी हो सकती है। चूंकि rsync केवल आपके मामले में एक परिष्कृत कॉपी-प्रोग्राम के रूप में काम करता है, इसलिए इसके बजाय cp का उपयोग करना बेहतर हो सकता है। cp के पास केवल-फ़ाइलों की प्रतिलिपि बनाने के लिए एक विकल्प (-u) है जो davfs2 फ़ाइल सिस्टम (= smartdrive) की तुलना में नए हैं और इसे फ़ाइलों को पढ़ने की आवश्यकता नहीं है, लेकिन केवल फ़ाइल मेटा डेटा की तरह पढ़ता है।
"Cp -pru directory / to / backup dav /" जैसा कमांड काम कर सकता है। यह फाइलों को डाउनलोड नहीं करता है (जैसे rsync कर सकता है, लेकिन मुझे यकीन नहीं है) (कृपया cp और rsync के मैनुअल को देखें)।
विकल्प?
तो जैसा कि @Aththon ने सुझाव दिया है, आप cp -u
फ़ाइलों को कॉपी करने के लिए विधि का उपयोग कर सकते हैं । यह समझते हुए कि यह विधि पूरी तरह से तुलना के कारक के रूप में एक फ़ाइल के आकार को देखती है, इसलिए यह पूरी तरह से विश्वसनीय नहीं है।
तुम्हें पता है, कुछ भी है कि संशोधन समय पर ही दिखता है जब फ़ाइलों की तुलना उपयोग नहीं करना चाहिए cp -pru
। वर्नर बताते हैं कि इस धागे में क्यों :
मॉड समय के साथ मुद्दे पर अंश
जब आप एक davfs2 फ़ाइल सिस्टम को अनमाउंट करते हैं और बाद में कुछ समय पर फिर से माउंट करते हैं, तो फ़ाइल समय सर्वर से समय की जानकारी के अनुसार बदल सकती है। फ़ाइलें क्या बदल गई हैं, यह निर्धारित करने के लिए cp -pu और rsync जैसे उपकरण इन समय पर भरोसा नहीं कर सकते हैं।
इसलिए संशोधन के आसपास के विभिन्न मुद्दों को देखते हुए विशुद्ध रूप से चेकसम का उपयोग करने का तरीका एक बेहतर फिट की तरह लगता है:
$ rsync -avvz --omit-dir-times --checksum --human-readable --progress <local dir> <remote dir>
--max-size=250M --exclude '.*'
। मुझे यकीन है किcp
ऐसा करने के लिए बनाया जा सकता है ... शायद cp में खोजने के आउटपुट को पाइप करके? लेकिन मुझे नहीं पता कि यह कैसे करना है। यदि हम एक समाधान के साथ आते हैं, तो मैं कोशिश करूँगाcp -ru
। साभार