rsync सिंक्रनाइज़ेशन नहीं .htaccess फ़ाइल


91

मैं सर्वर 2 की निर्देशिका बी के साथ सर्वर 1 के rsync निर्देशिका ए की कोशिश कर रहा हूं।

Server1 की निर्देशिका A में बैठकर, मैंने निम्न कमांड चलाई।

rsync -av * server2::sharename/B

लेकिन दिलचस्प बात यह है कि यह सभी फ़ाइलों और निर्देशिकाओं को सिंक्रनाइज़ करता है।

मैंने निम्न आदेश भी आज़माए:

rsync -av --include=".htaccess" * server2::sharename/B

लेकिन परिणाम वही हैं।

किसी भी विचार ए निर्देशिका की छिपी हुई फ़ाइलों को सिंक्रनाइज़ क्यों नहीं किया जा रहा है और इसे कैसे ठीक किया जाए। मैं रूट उपयोगकर्ता के रूप में चल रहा हूं।

धन्यवाद


1
मैं एक उत्तर से संतुष्ट हूं, आपको इसे स्वीकार करना चाहिए: meta.stackexchange.com/questions/5234/…
Kutzi

जवाबों:


109

यह इस तथ्य के कारण है कि *वर्तमान कामकाजी निर्देशिका में उन फ़ाइलों को छोड़कर डिफ़ॉल्ट रूप से विस्तारित है, जिनका नाम डॉट से शुरू होता है। इस प्रकार, rsyncइन फ़ाइलों को तर्क के रूप में कभी नहीं प्राप्त होता है।

आप .वर्तमान वर्किंग डायरेक्टरी को दर्शाते हुए पास कर सकते हैं rsync:

rsync -av . server2::sharename/B

यह तरीका rsyncमौजूदा वर्किंग डायरेक्टरी में ट्रांसफर करने के लिए फाइल के रूप में दिखेगा, जिसका *विस्तार उन्हें तलाश करने के लिए है।

वैकल्पिक रूप से, आप *उन सभी फ़ाइलों का विस्तार करने के लिए निम्न आदेश का उपयोग कर सकते हैं, जिनमें एक डॉट के साथ शुरू होने वाले शामिल हैं:

shopt -s dotglob

शॉप मैनपेज भी देखें ।


7
वास्तव में '।' इस मुद्दे को हल करता है, उदाहरण के rsync -avz user@domain.com:/remote/path/. /destination/pathलिए नौकरी करता है
Mariusz Nowak

56

जैसे, सिंक कर रहा है - किसी को भी जो अभी (सभी छिपा फ़ाइलों सहित) सर्वर के बीच सिंक निर्देशिका के लिए कोशिश कर रहा है के लिए somedirAपर source-serverकरने के लिए somedirBएक गंतव्य सर्वर पर - इस कोशिश :

rsync -avz -e ssh --progress user@source-server:/somedirA/ somedirB/

दोनों रास्तों के अंत में स्लैश पर ध्यान दें। किसी भी अन्य वाक्य रचना में अप्रत्याशित परिणाम हो सकते हैं!


इसके अलावा, मेरे rsyncलिए गंतव्य सर्वर से आदेशों को निष्पादित करना सबसे आसान है , क्योंकि यह सुनिश्चित करना आसान है कि मुझे उचित लेखन एक्सेस मिल गया है (यानी, मुझे sudoऊपर दिए गए कमांड में जोड़ने की आवश्यकता हो सकती है )।

संभवतः बिना कहे चला जाता है, लेकिन जाहिर है कि आपके दूरस्थ उपयोगकर्ता को भी somedirAआपके स्रोत सर्वर पर पढ़ने की आवश्यकता है। :)


क्या यह -e ध्वज था जो .htaccessफ़ाइल को सिंक करेगा ?
जेसी बर्कसिक

1
@JesseBurcsik नहीं, -e sshकनेक्ट करने के लिए विधि निर्दिष्ट करता है।
ट्रिपलए

1
तुम सिर्फ स्रोत पर स्लेश की जरूरत है, गंतव्य कोई फर्क नहीं पड़ता
जोनास Stensved

28

मेरी भी यही समस्या थी।

मेरे लिए जब मैंने निम्न कमांड किया तो छिपी हुई फाइलें rsync'ed नहीं मिलीं

rsync -av /home/user1 server02:/home/user1

लेकिन जब मैंने रास्तों के अंत में स्लैश जोड़े, तो छुपी हुई फाइलें rsync'ed थीं।

rsync -av /home/user1/ server02:/home/user1/

रास्तों के अंत में स्लैश पर ध्यान दें , क्योंकि ब्रायन लैसी ने कहा कि स्लैश प्रमुख हैं। मुझे उनकी पोस्ट पर टिप्पणी करने की प्रतिष्ठा नहीं है या मैंने ऐसा किया होता।


1
बस shopt -s dotglobअपनी स्क्रिप्ट को rsync से पहले जोड़ें
Pian0_M4n

3

मुझे लगता है कि समस्या शेल वाइल्डकार्ड विस्तार के कारण है। उपयोग । स्टार की जगह।

निम्नलिखित उदाहरण निर्देशिका सामग्री पर विचार करें

$ ls -a .
. .. .htaccess a.html z.js

शेल का वाइल्डकार्ड विस्तार तर्क सूची का अनुवाद करता है जो rsync प्रोग्राम से मिलता है

-av * server2::sharename/B

में

-av a.html z.js server2::sharename/B

कमांड निष्पादित होने से पहले।


3

*छिपे हुए फ़ाइलें एक समय होनेवाला बनाना नहीं करने के लिए rsynch को बताओ। आपको इसे छोड़ना नहीं चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.