केवल नई फ़ाइलों को rsync कैसे करें


143

मैं अपने मुख्य वेब सर्वर को दूरस्थ सर्वर पर बाद में नई उत्पन्न फ़ाइल जोड़कर rsync स्थापित करने का प्रयास कर रहा हूं।

यहां वह कमांड है जिसका मैं उपयोग करता हूं:

rsync -avh --update -e "ssh -i /path/to/thishost-rsync-key" remoteuser@remotehost:/foo/bar /foo/bar

लेकिन ऐसा लगता है कि वेब सर्वर वास्तव में '--update' ध्वज के बावजूद सभी फ़ाइलों को स्थानांतरित करता है। मैंने अलग-अलग ध्वज संयोजनों (उदाहरण के लिए '-a' और '-uv' का उपयोग करने की कोशिश की है) लेकिन किसी ने मदद नहीं की। इसलिए सोच रहा हूं कि मैं केवल नई जोड़ी गई फाइलों को भेजने के लिए rsync कमांड को कैसे संशोधित कर सकता हूं। धन्यवाद


2
यदि आप फ़ाइलों को दूरस्थ सर्वर में सिंक करना चाहते हैं , तो क्या यह अंतिम नहीं होना चाहिए? यानी rsync /foo/bar remoteuser@remotehost:/foo/bar
ओस्ट्रोकैच

आप इस वेबपृष्ठ से रूचि ले सकते हैं । इसके अलावा, फाइलसिस्टम से सावधान रहें। यदि सर्वर का फाइल सिस्टम उस -aविकल्प का समर्थन नहीं करता है जो (स्वामी, समूह, परमिट, ...) का अर्थ है तो यह हमारे मुद्दे का कारण होना चाहिए।
ppr

2
कोई भी उत्तर उस समस्या को हल नहीं करता है जहां स्थानीय फ़ाइलों को दूरस्थ गंतव्य पर पूरी तरह से कॉपी नहीं किया गया था, और आप केवल नई फ़ाइलों को rsync करना चाहते हैं।
एक्सल ब्रेग्न्सबो

मुझे सिर्फ -cविकल्प मिला । यह मौजूदा समय या आकार के बजाय एक चेकसम के आधार पर मौजूदा फाइलों को छोड़ देता है।
13:18 पर

जवाबों:


180

से man rsync:

--ignore-existing       skip updating files that exist on receiver

--updateकुछ अलग करता है, शायद यही कारण है कि आप अप्रत्याशित परिणाम प्राप्त कर रहे हैं (देखें man rsync):

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


1
खैर वास्तव में मैंने '--update' के बजाय '--ignore-मौजूदा' के साथ कमांड की कोशिश की। यह तेजी से समाप्त हो गया लेकिन नई फाइलों को दूरस्थ होस्ट में नहीं रखा गया। कोई विचार? धन्यवाद
supermario

13
मैन पेज चूसना (यह सही है मैं वहां गया था), इस मामले में, इसका --ignore-existingमतलब यह नहीं है कि जो फाइलें रिसीवर पर मौजूद हैं, वे फाइल को ट्रांसफर न करें, या अगर रिसीवर के नाम पर कुछ फाइल / फोल्डर उसी नाम से मौजूद नहीं हैं?
PUK

7
- अद्यतन फ़ाइलों को छोड़ देता है जब mtimes समान हैं (जो कि शब्द का अर्थ नहीं है)। मैंने यह परीक्षण किया। मेरा मानना ​​है कि अगर शब्द "केवल स्रोत फाइलें जो गंतव्य की तुलना में नई हैं, तो उनकी नकल की जाएगी" को बेहतर समझा जाएगा।
ऑक्टोपस

4
@ ऑक्टोपस "केवल स्रोत फ़ाइलें जो गंतव्य की तुलना में नई हैं" कॉपी की जाएंगी ... या स्रोत फ़ाइलें जिनके गंतव्य फ़ाइल समकक्षों के समान संशोधन समय है, लेकिन उनके अलग-अलग आकार हैं । मुझे लगता है कि यह एक महत्वपूर्ण बिंदु है। (क्रिस ने पहले ही कवर कर लिया, धन्यवाद)
जोनाथन कोमर

तो आपको जरूरत है --ignore- मौजूदा और -r (पुनरावर्ती)। -v (
क्रिया

40

मेरे मामले में मेरे पास समान मुद्दे थे, केवल संशोधित / नए लोगों के बजाय सभी फाइलों को स्थानांतरित कर दिया। मैंने इसे मापदंडों के -tबजाय ( -aऔर), -P(समतुल्य ) का उपयोग करके हल किया --partial --progress:

rsync -h -v -r -P -t source target

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

विस्तार में पैरामीटर:

  • -h: मानव पठनीय संख्याएँ
  • -v: क्रिया
  • -r: निर्देशिकाओं में पुनरावृत्ति
  • -P: --partial(आंशिक रूप से स्थानांतरित फ़ाइलों को रखें) +
            --progress(स्थानांतरण के दौरान प्रगति दिखाएं)
  • -t: संशोधन बार संरक्षित करें

2
+1 के लिए '-a बहुत अधिक होता है' (वास्तव में -rlptgoD, इसलिए अनुमति नहीं मिलती है, चपटा नहीं होता है, समूह और स्वामी मेरे विशिष्ट प्ले-सेफ बैकअप को संरक्षित नहीं करते ...)
फ्रैंक नॉक

2

Rsync के साथ मेरे अनुभव से, 1TB विभाजन की नकल कुशल होना बहुत बड़ी है। इसे प्रोसेस करने में हमेशा के लिए rsync लगता है। इसके बजाय, इसे उपनिर्देशिकाओं द्वारा करें। यही है, प्रत्येक मुख्य उपनिर्देशिका के लिए rsync चलाएँ। यह बहुत तेज हो जाता है अगर इसमें दसियों हजार फाइलों को टटोलना नहीं पड़ता।


1
हो सकता है कि आप स्मृति से बाहर चले गए और आपके सिस्टम ने स्वैप करना शुरू कर दिया?
मार्सेल बुर्खार्ड

-2

प्रयत्न, कोशिश

rsync -zvrt --update SOURCE DESTN

8
ओपी के लिए ऊपर दिए गए आदेश की थोड़ी और व्याख्या की जाएगी।
पेशेके

आदमी पृष्ठ से `-u, --update फ़ाइलों को receiver` पर नए हैं छोड़
जूते का फीता
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.