rsync - क्या यह स्थानांतरण के दौरान एक अस्थायी फ़ाइल बनाता है?


37

जहाँ तक मैं देख सकता हूँ rsync लक्ष्य निर्देशिका में फ़ाइल को तब तक नहीं बनाता है जब तक कि यह पूरा न हो जाए।

इसका अर्थ यह होना चाहिए कि यह फ़ाइल को कहीं अस्थायी निर्देशिका में बनाता है और पूर्ण होने पर फ़ाइल को लक्ष्य निर्देशिका में कॉपी करता है।

सबसे पहले, क्या यह सही है?

यदि सही है, तो क्या rsync के लिए यह संभव है कि वह टेम्प डायरेक्टरी का उपयोग न करे और बदले में फाइल को टारगेट डायरेक्टरी में बनाए और इसे पूरा होने तक लिखते रहें?

जवाबों:


46

हाँ, यह एक अस्थायी फ़ाइल बनाता है।

मैन पेज के अनुसार आप उस निर्देशिका को निर्दिष्ट कर सकते हैं जिसमें अस्थायी फ़ाइल को पैरामीटर -T के रूप में संग्रहीत किया गया है

-T, --temp-dir = DIR, निर्देशिका DIR में अस्थायी फ़ाइलें बनाते हैं

आपके प्रश्न के दूसरे भाग का उत्तर भी वहां मिल सकता है:

--जगह में

यह विकल्प बदलता है कि फ़ाइल के डेटा को अपडेट करने के लिए rsync किसी फ़ाइल को कैसे स्थानांतरित करता है: फ़ाइल की नई प्रतिलिपि बनाने की डिफ़ॉल्ट विधि के बजाय और इसे पूरा होने पर इसे स्थानांतरित करने के बजाय, rsync इसके बजाय अद्यतन किए गए डेटा को सीधे गंतव्य पर भेजता है फ़ाइल।


4
महत्वपूर्ण लेख! प्रश्न मानता है कि rsync "फ़ाइल को जगह में कॉपी करता है", जबकि rsync दस्तावेज़ निर्दिष्ट करता है कि rsync वास्तव में "इसे जगह में ले जा रहा है", जो एक IMISTANT DISTINCTION है । यह सुनिश्चित करता है कि फाइल परमाणु स्थान में गंतव्य स्थान पर दिखाई दे । यह दौड़ की स्थितियों को रोकने के लिए उपयोगी है, जहां एक और एप्लिकेशन गंतव्य फ़ाइल के प्रकट होने की प्रतीक्षा कर रहा है और इसे पढ़ने के लिए तुरंत खोलता है, लेकिन फ़ाइल की प्रतिलिपि नहीं बनाई जा रही है।
ओगरे Psalm33

15

यह टार्गेट डायरेक्टरी में डिफ़ॉल्ट रूप से एक टेम्प फाइल बनाता है और नाम देता है .<FILE_NAME>.<RANDOM_STRING>। इसलिए, यदि आप नकल कर रहे हैं, तो foo.txtयह एक tmp फ़ाइल बनाएगा, जिसे कहा जाता है .foo.txt.GV4H3( GV4H3यादृच्छिक स्ट्रिंग है जो हर बार जब आप इसे चलाते हैं तो यह अलग होगा)। आप इन rsyncविकल्पों का उपयोग करके इस व्यवहार को नियंत्रित कर सकते हैं:

   --partial
          By default, rsync will delete any partially transferred
          file if the transfer is interrupted.  In  some  circum‐
          stances  it  is more desirable to keep partially trans‐
          ferred files. Using the --partial option tells rsync to
          keep  the  partial  file which should make a subsequent
          transfer of the rest of the file much faster.

   --partial-dir=DIR
          A better way to keep partial files than  the  --partial
          option  is  to  specify a DIR that will be used to hold
          the partial data (instead of writing it out to the des‐
          tination file).  On the next transfer, rsync will use a
          file found in this dir as data to speed up the  resump‐
          tion  of  the  transfer and then delete it after it has
          served its purpose.

कृपया rsyncमैन पेज के प्रासंगिक भागों को पढ़ें (निम्नलिखित केवल बड़े हिस्से का एक छोटा सा उद्धरण है कि कैसे उपयोग करें --partial-dir)।


5

rsync लक्ष्य निर्देशिका में अस्थायी फ़ाइलें बनाता है। उस फ़ाइल को स्रोत की तरह नाम दिया गया है लेकिन विस्तार के साथ। यह इस तरह हो सकता है:

source: foo.bar 
target temp: foo.bar.hzmkjt7 (hzmkjt7 is just an example) 

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


एक प्रक्रिया उपयोगकर्ता की अनुमतियों के साथ फाइल बनाती है जो इसे चलाता है । इस मामले में अनुमतियों के कारण फ़ाइलों को नहीं देखना संभव नहीं है।
урослав Рахматуллин 22

@ УрославРахматуллин rsync को डेमन मोड में भी चलाया जा सकता है। या इसे क्रोनजोब के रूप में शेड्यूल किया जा सकता है। किसी भी तरह से यह संभव है कि जिस उपयोगकर्ता के तहत rsync चल रहा है, वह उपयोगकर्ता नहीं है जो अस्थायी फ़ाइल देखना चाहता है। उस स्थिति में यह संभव है कि यह एक अनुमति मुद्दा हो।
साइमन

1
अस्थायी फ़ाइल "" के साथ शुरू हो सकती है। इस मामले में, यह .foo.bar.hzmkjt7 है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.