2008-09-07 13 views
168

मेरे पास दो मशीनें, गति और द्रव्यमान है। गति में एक तेज इंटरनेट कनेक्शन है और एक क्रॉलर चला रहा है जो डिस्क पर बहुत सी फाइलें डाउनलोड करता है। द्रव्यमान में बहुत सी डिस्क स्पेस है। मैं डाउनलोड करने के बाद फ़ाइलों को गति से बड़े पैमाने पर ले जाना चाहता हूं। आदर्श रूप में, मैं तो बस चलाने चाहते हैं:अधूरा स्रोत फ़ाइलों को हटाने से rsync रखें

$ rsync --remove-source-files speed:/var/crawldir . 

लेकिन मुझे चिंता है कि rsync एक स्रोत फ़ाइल है कि अभी तक डाउनलोड पूरा नहीं किया गया है की लिंक रद्द होगा। (मैंने सोर्स कोड देखा और मैंने इसके खिलाफ कुछ भी सुरक्षा नहीं देखी।) कोई सुझाव?

उत्तर

8

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

10

मुझे लगता है कि यह समस्या को पूर्ण होने से पहले एक फ़ाइल स्थानांतरित कर रही है, न कि आप इसे हटा रहे हैं।

यदि यह लिनक्स है, यह संभव है एक फ़ाइल प्रक्रिया एक और प्रक्रिया बी फ़ाइल असंबद्ध कर सकते हैं द्वारा खुला होना करने के लिए। कोई त्रुटि नहीं है, लेकिन निश्चित रूप से ए अपना समय बर्बाद कर रहा है। इसलिए, तथ्य यह है कि rsync स्रोत फ़ाइल को हटा देता है कोई समस्या नहीं है।

समस्या rsync स्रोत फ़ाइल के बाद ही की नकल की है हटाता है, और अगर यह अभी भी डिस्क पर लिखी जा रहा है आप एक आंशिक फ़ाइल होगा।

इस बारे में कैसे: एक दूरस्थ फ़ाइल सिस्टम (एनएफएस काम करेगा) speed में माउंट करेगा। फिर बस फ़ाइलों को सीधे क्रॉल करें।

3

Rsync कुछ patters मिलान फ़ाइलें हटा सकते हैं। आप इसे यह एक अस्थायी निर्देशिका के लिए फ़ाइलों को डाउनलोड करने के लिए संशोधित नहीं कर सकते भले ही, हो सकता है यह फ़ाइलों (उदाहरण के लिए: foo.downloading जबकि foo नाम की एक फ़ाइल के लिए डाउनलोडिंग) डाउनलोड के दौरान अलग ढंग से नामकरण के एक सम्मेलन है और आप को यह संपत्ति का उपयोग कर सकते उन फ़ाइलों को बाहर निकालें जिन्हें अभी भी कॉपी करने से डाउनलोड किया जा रहा है।

3

आप रेंगने प्रक्रिया पर नियंत्रण है, या यह उम्मीद के मुताबिक उत्पादन है, इसके बाद के संस्करण समाधान (एक tempfile में संग्रहीत जब तक समाप्त हो गया, तो पूरा-डाउनलोड जगह पर mv'ing, या एक '.downloading' के साथ फ़ाइलें अनदेखी नाम का प्रकार) काम कर सकता है। यदि यह सब आपके नियंत्रण से बाहर है, तो आप यह सुनिश्चित कर सकते हैं कि फ़ाइल 'lsof $ filename' करके किसी भी प्रक्रिया द्वारा खोला नहीं गया है और कोई परिणाम होने पर जांच कर रहा है। स्पष्ट रूप से अगर किसी के पास फ़ाइल खुलती नहीं है, तो इसे स्थानांतरित करना सुरक्षित है।

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