मुझे एक स्वचालित प्रक्रिया (1 मिनट क्रोन स्क्रिप्ट के माध्यम से) को तैनात करने की आवश्यकता है जो एक विशिष्ट निर्देशिका में टार फ़ाइलों की तलाश करती है। यदि एक टार फ़ाइल पाई जाती है, तो यह उचित स्थान पर अनारक्षित है और तब टार फ़ाइल हटा दी जाती है।
टार फ़ाइलों को स्वचालित रूप से SSH पर दूसरे सर्वर से इस सर्वर पर कॉपी किया जाता है। कुछ मामलों में, टार फाइलें बहुत बड़ी होती हैं, जिनमें बहुत सारी फाइलें होती हैं।
समस्या है कि मैं में चलाने के लिए उम्मीद कर रहा हूँ: अगर यह लेता है> 1 मिनट के लिए टार फ़ाइल सर्वर पर कॉपी किया जाना है, और क्रोन स्क्रिप्ट हर मिनट में एक बार चलता है, यह .tar.gz फ़ाइल को देखने और करने की कोशिश करने जा रहा है। इसे तब तक अनारक्षित करें, भले ही टार फ़ाइल अभी भी लिखे जाने की प्रक्रिया में है।
अगर किसी फ़ाइल को वर्तमान में लिखा जा रहा है, या यदि वह केवल एक आंशिक फ़ाइल है, आदि के लिए परीक्षण करने का कोई तरीका है?
एक विकल्प मैं सोच रहा था कि फ़ाइल को एक अलग फ़ाइल एक्सटेंशन (जैसे .tar.gz.part
) के रूप में कॉपी किया जाना चाहिए और फिर .tar.gz
हस्तांतरण पूरा होने के बाद इसका नाम बदल दिया जाएगा। लेकिन मुझे लगा कि मैं यह पता लगाने की कोशिश करूंगा कि क्या यह निर्धारित करने का एक तरीका है कि फ़ाइल पहले कमांड लाइन पर है ... कोई सुराग?
rsync
स्थानांतरण (डिफ़ॉल्ट रूप से) के दौरान एक अस्थायी फ़ाइल नाम का उपयोग करता है, और केवल फ़ाइल पूरी तरह से स्थानांतरित होने के बाद , इसे वास्तविक फ़ाइल नाम में बदल देता है।