मैक और लिनक्स के बीच काम नहीं कर रहे विशेष चरित्र फ़ाइलों के साथ Rsync


18

मैं एक मैक पर रहने वाले डिस्क के साथ अपने Ubuntu सर्वर का बैकअप लेने के लिए rsync का उपयोग करना चाहता हूं। लेकिन मुझे यह ठीक से काम करने के लिए नहीं मिलता है, क्योंकि हर बार जब मैं शुरुआती समय के बाद rsync ऑपरेशन को फिर से चलाता हूं, तो विशेष वर्ण वाली फ़ाइलों को पहले हटा दिया जाता है और फिर पुन: सिंक किया जाता है। ऐसा लगता है जैसे विभिन्न चरित्र सेट के साथ कोई समस्या है।

पसंदीदा समाधान का उपयोग करने के प्रतीत हो रहा है --iconvविकल्प:

आप कम से कम यदि आप मैक पर हैं तो आप UTF-8 NFC और NFD के बीच कनवर्ट करने के लिए rsync's-iconv विकल्प का उपयोग कर सकते हैं। एक विशेष utf-8-mac वर्ण सेट है जो UTF-8 NFD के लिए खड़ा है। तो अपने मैक से अपने एनएएस में फ़ाइलों की प्रतिलिपि बनाने के लिए, आपको कुछ इस तरह चलाने की आवश्यकता होगी:

rsync -a --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/

यह UTF-8 NFD से सभी स्थानीय फ़ाइलनामों को रिमोट सर्वर पर UTF-8 NFC में बदल देगा। फ़ाइलों की सामग्री प्रभावित नहीं होगी।

@Jan की बदौलत, मैंने अपने rsync संस्करण को अपने मैक पर 2.6.9 से अपडेट किया । 3.1.1 को। फिर भी, मैं अभी भी काफी नहीं हूँ, क्योंकि मुझे अब एक और त्रुटि मिली है:

iconv_open("UTF-8", "utf-8-mac") failed
rsync error: requested action not supported (code 4) at rsync.c(118) [sender=3.0.9]
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.1]

मुझे यह समझने में हानि हो रही है कि "अनुरोधित कार्रवाई का समर्थन क्यों नहीं किया गया" क्योंकि ऐसा लगता है कि मेरे उबंटू (12.04) पर rsync संस्करण 3.xx पोस्ट है, और इस तरह से --iconvविकल्प का समर्थन करना चाहिए ।

संपादित करें: मुझे जोड़ने दें कि जब मैं (मैक पर, nota bene) मैक से लिनक्स पर rsync आरंभ करता हूं, तो सब कुछ शानदार तरीके से काम करता है:

rsync -av --delete --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/

लेकिन मैक से दूसरे रास्ते पर जाने से काम नहीं चलता। अजीब तरह से, linux मशीन से rsync आरंभ करने के लिए परीक्षण इस अजीब संदेश को प्रस्तुत करता है:

rsync: on remote machine: --iconv=UTF-8-MAC: unknown option
rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-45/rsync/main.c(1333) [server=2.6.9]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]

बहुत अजीब दावे सहित [server=2.6.9], हालांकि मैंने मैक पर 3.1.1 को अपडेट किया है। कुछ कारणों से, यह दिखता है कि मेरी लिनक्स मशीन मैक पर केवल मूल rsync संस्करण को देखती है।

इसे हल करने के बारे में कोई सुझाव?

जवाबों:


18

समाधान शर्मनाक रूप से सरल था: समस्या पर शोध करते समय मैंने एक टिप्पणी के कारण बहुत कुछ पढ़ा, मुझे लगा कि आप परिवर्तन के क्रम में निर्धारित चरित्र को निर्दिष्ट करने वाले थे; लेकिन ऐसा लगता है कि यह सही वाक्यविन्यास नहीं है। बल्कि, एक चाहिए हमेशा का उपयोग --iconv=utf-8-mac,utf-8जब से मैक rsync initialising, और हमेशा का उपयोग --iconv=utf-8,utf-8-macजब Linux मशीन से rsync initialising, अगर मैं मैक या Linux मशीन से फ़ाइलों को समन्वयित करना चाहते हैं कोई फर्क नहीं पड़ता।

फिर यह जादू की तरह काम करता है!

संपादित करें: वास्तव में, कभी-कभी, मैन्युअल पृष्ठ को बारीकी से जांचना अच्छी बात है। यहाँ यह सफेद पर काला है:

--iconv=CONVERT_SPEC
              Rsync  can  convert  filenames between character sets using this
              option.  Using a CONVERT_SPEC of "." tells rsync to look up  the
              default  character-set via the locale setting.  Alternately, you
              can fully specify what conversion to do by giving a local and  a
              remote   charset   separated   by   a   comma   in   the   order
              --iconv=LOCAL,REMOTE, e.g.  --iconv=utf8,iso88591.   This  order
              ensures  that the option will stay the same whether you're push-
              ing  or  pulling  files.

उह ... यह मेरे लिए उबंटू से अमेज़न एस 3 तक हो रहा है ...: |
टॉम रोजगारो

कोई बात नहीं! AWS सीएलआई ने मेरे लिए इसे तय किया।
टॉम रोजगारो

काले पर सफेद;)
हैलो वर्ल्ड

3

मैं इस काम की पुष्टि कर सकता हूं, मुझे भी यही समस्या थी। मेरे मामले में एक उच्चारण चरित्र के साथ कोई भी फ़ाइल गंतव्य पर अप्राप्य थी। मैंने केवल अपने फ़ोल्डर पर तुलनात्मक अनुप्रयोग का उपयोग करके अपने मैक पर एक फ़ोल्डर तुलना चलाकर देखा था: https://itunes.apple.com/gb/app/compare-folders/id816042486?mt=12

ऊपर जोड़ा गया --iconv = utf-8-mac, utf-8 और BOOM! rsync ने हर उच्चारण फ़ाइल को एक नए के साथ बदल दिया।

कुछ जानकारी जोड़ने के लिए जैसा कि उपरोक्त लिंक अब काम नहीं करते हैं, 3.1.2 करने के लिए rsync को अपग्रेड करने के लिए, Macports स्थापित करें और चलाएं: sudo port स्थापित rsync

इस कारण से आप दूरस्थ सर्वर को संस्करण 2.6.9 देख रहे थे, क्योंकि पुराना संस्करण वास्तव में अभी भी है और दूरस्थ सर्वर उस नए के बजाय एक को देख रहा है।

संस्करण 2.6.9 / usr / bin में स्थित है

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