विंडोज़ पर rsync फ़ाइल अनुमतियाँ


32

मेरे पास एक rsync सेवा है जो फ़ाइलों को रिमोट मशीन से एक मशीन पर सिंक करती है जो उन्हें नेटवर्क ड्राइव पर छोड़ती है।

मुझे गंतव्य फ़ोल्डर की मूल अनुमतियों को लेने के लिए प्रतिलिपि की गई फ़ाइलों की आवश्यकता है।

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

मैं डोमेन व्यवस्थापक के रूप में लॉग इन हूं; यह मुझे किसी भी फ़ोल्डर में किसी भी अनुमति को संशोधित करने की अनुमति नहीं देगा। क्या देता है?

चलाने के आदेश:

rsync.exe  -v -rlt -z --delete "src_path" "dst_path"

वर्तमान में सिंक करने के लिए आप किस कमांड का उपयोग कर रहे हैं?
जॉन टी

जवाबों:


24

( http://www.samba.org/ftp/rsync/rsync.html से )

सारांश में: गंतव्य फ़ाइलों (पुराने और नए दोनों) को स्रोत अनुमतियाँ देने के लिए, उपयोग करें --perms

नई फ़ाइलों को गंतव्य-डिफ़ॉल्ट अनुमति देने के लिए (मौजूदा फ़ाइलों को अपरिवर्तित छोड़ते समय), सुनिश्चित करें कि --permsविकल्प बंद है और उपयोग करें --chmod=ugo=rwX(जो यह सुनिश्चित करता है कि सभी गैर-नकाबपोश बिट्स सक्षम हो जाएं)।

यदि आप इस बाद वाले व्यवहार को टाइप करने में आसान बनाना चाहते हैं, तो आप इसके लिए एक पोप उर्फ ​​को परिभाषित कर सकते हैं, जैसे कि इस लाइन को फाइल में डालना ~ / .popt (निम्नलिखित -Z विकल्प को परिभाषित करता है, और इसमें शामिल हैं-no- जी गंतव्य गंतव्य के डिफ़ॉल्ट समूह का उपयोग करने के लिए):

    rsync alias -Z --no-p --no-g --chmod=ugo=rwX

बहुत धन्यवाद। मैं सही झंडे का उपयोग करने के लिए याद नहीं कर सकता ...
Vokhila-Oliba

2
यह लिनक्स पर rsync के लिए प्रासंगिक है, लेकिन हमेशा समस्या को हल नहीं करता है जब rsync'ing से एक Windows ड्राइव, जो कि मूल पोस्ट से पूछ रहा है।
साइमन ईस्ट

18

Cygwin की "पॉज़िक्स" सुरक्षा ने मुझे Windows NTFS फ़ाइल अनुमतियों के साथ बहुत सारी समस्याएं पैदा कर दी हैं - यहां तक ​​कि --no-permsrsync के साथ भी ।

मैंने पाया कि नई बनाई गई फ़ाइलें / फ़ोल्डर ठीक से डिफ़ॉल्ट अनुमतियों को इनहेरिट नहीं करते हैं, लेकिन प्रत्येक फ़ाइल / फ़ोल्डर <not inherited>विंडोज फ़ाइल / फ़ोल्डर में बहुत सारी प्रविष्टियों के साथ समाप्त होता है जो कि सुरक्षा सुरक्षा टैब है। (और यह समस्या सिर्फ rsync से संबंधित नहीं है)।

मुझे यह संबंधित पोस्ट और यह लिंक दोनों बहुत ही मददगार लगे कि इन समस्याओं noaclको साइबरविन की /etc/fstabफाइल में विकल्प का उपयोग करके कैसे हल किया जाए । इस समाधान का नकारात्मक पक्ष यह है कि साइबरविन फ़ाइल / फ़ोल्डर अनुमतियों को सेट करने की क्षमता खो देता है, लेकिन कई मामलों में यह महत्वपूर्ण नहीं है।

(इस विषय को देखते हुए आप शायद CYGWIN = NONTSEC पर्यावरण चर को सेट करने के संदर्भ पाएंगे, लेकिन यह cygwin v1.5 के लिए है और इसके बाद cygwin v1.7 में काम नहीं करता है।)


/ Etc / fstab फ़ाइल का संपादन करना मेरे लिए इसे तय करता है। मुझे ऐसा करने के लिए DeltaCopy जैसे किसी अन्य परिनियोजन के बजाय cygwin के भीतर rsync का उपयोग करना पड़ा।
मैट कोनोली

यदि आप सिर्फ cwrsync पैकेज का उपयोग कर रहे हैं (और साइबरगन नहीं) तो आप fstab फ़ाइल को कहाँ रखते हैं?
साइमन ईस्ट

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

ऐसा लग रहा है कि मैं अंतर्निहित ड्राइवर का उपयोग करके macOS पर बढ़ते NTFS के "जोखिम भरा" तरीके का उपयोग कर रहा हूं, जो कि पैरागॉन / टक्सरा और FUSE ड्राइवरों की तुलना में बहुत कम स्थिर माना जाता है। तो ध्यान रखें कि यदि आप एक ही नाव में हैं
स्टीवन लू

8

DeltaCopy के साथ विंडोज पर मैं इसके साथ काम कर सकता है:

rsync --perms --chmod=a=rw,Da+x ...

इसके साथ भी काम किया --recursive


यह ज्यादातर काम करता है, हालांकि, मुझे = rwx को शामिल करने के लिए thechmod विकल्प को बदलना पड़ा ताकि बैच फ़ाइलों आदि को ठीक से निष्पादित किया जा सके।
टेलर गेरिंग ऑक्ट

1
यह एकमात्र विकल्प है जिसने मेरे लिए काम किया। ऊपर -नो-परमिट की कोशिश की और कोई फायदा नहीं हुआ। इसने मुझे केवल कुछ <विरासत में मिली> अनुमतियाँ नहीं दीं, जो कि मैं चाहता था कि किस तरह की अनुमतियाँ थीं और इसमें क्रियान्वित उपयोगकर्ता के लिए कोई अनुमति नहीं थी। धन्यवाद!
एरोनानअमर्स

DeltaCopy में एक chmod निष्पादन योग्य है जो बाद में अनुमतियों को ठीक कर सकता है, जैसे chmod -R 777 / cygdrive / g
jnnnnn

1
- शुक्राणु मेरे लिए गायब था, कॉपी को आसानी से हल करने के लिए।
टायलर एस। लोपर

1

rsync, कम से कम Cygwin पर निम्न स्विच है:

-, - ACLs को सुरक्षित रखता है (आशय - शंकु)

मेरा Cygwin संस्करण है:

CYGWIN_NT-6.3 1.7.29 (0.272 / 5/3) 2014-04-07 13:46 x86_64 साइगविन

उम्मीद है की यह मदद करेगा!


1
सुपर उपयोगकर्ता में आपका स्वागत है! जब तक यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, सुधार के लिए यह विवरण शामिल करना बेहतर होगा कि यह कैसे प्रश्न का उत्तर देता है (आपके दावे का समर्थन करने के लिए स्रोत का उल्लेख करना एक प्लस है)।
जी-मैन का कहना है कि 'मोनिका' की बहाली

1

शीर्ष रेटेड जवाब केवल तभी काम करता है जब आप विंडोज़ में ss पर rsync का उपयोग कर रहे हों। यदि आप cygwin rsync डेमॉन का उपयोग सिर्फ noacl in / etc / fstab का उपयोग करके करते हैं, तो जो कुछ भी कारण से यह वंशानुक्रम का सम्मान नहीं करता है, भले ही आप उपयोगकर्ता से छुटकारा पाएं और noacl, ओवरराइड आदि का प्रयास करें, ऐसा लगता है। यदि आप एक शीर्ष स्तर की ड्राइव में rsyncing कर रहे हैं और रास्ते का उपयोग करें / / cygdrive / जो भी /etc/rsyncd.conf में। इसके बजाय, आपको / etc / fstab में एक अलग माउंट पॉइंट बनाने और इसके बजाय अपने rsyncd.conf में उपयोग करने की आवश्यकता है:

D:\     /d_drive  ntfs    binary,posix=0,noacl,user,override      0 0

/etc/rsyncd.conf में, आपके पास कुछ इस तरह होगा:

use chroot = yes

[d_drive]
path = /d_drive
comment = d_drive
auth users = someUser
secrets file = /etc/rsyncd.secrets
read only = false
write only = false
list = false
uid = someUser

तब मुझे विंडोज़ सिस्टम को रिबूट करना पड़ा, बस rsync सेवा को फिर से शुरू करने से अकेले मदद नहीं लगती थी, यह चिरोट और चदिर त्रुटियों को फेंकती रही (भले ही / d_drive आरोहित था और चेरोट = गलत का उपयोग करें और मैं इसे लिख सकता हूं)। तब जब आप विंडोज़ सिस्टम के उपयोग में rsync करते हैं:

cd /local/path/to/copy
rsync -rltD --no-p --no-g --no-o  ./ rsync://someUser@localhost:remotePort/d_drive/

1

अतीत में मैंने अपने वर्तमान उपयोगकर्ता के लिए Windows में अनुमतियों को फिर से असाइन किया है, बाद takeownमें एक उन्नत कमांड प्रॉम्प्ट का उपयोग करके :

takeown /f <NameOfFolder> /r /d Y

बेशक, अगर आपने rsyncपहली बार सही झंडे का इस्तेमाल किया है, तो यह अनावश्यक है लेकिन अगर आप rsyncउन फ़ाइलों के लिए फिर से चलाना नहीं चाहते जिन्हें आपने पहले ही कॉपी कर लिया है, तो मैं इसकी सिफारिश करूंगा।


1
सुपर उपयोगकर्ता में आपका स्वागत है! कृपया प्रश्न को फिर से ध्यान से पढ़ें। आपका उत्तर मूल प्रश्न का उत्तर नहीं देता है
DavidPostill

यह देखते हुए कि प्रश्न "क्या देता है?" मैं कहूंगा कि इसका उत्तर भी एक हल नहीं है, लेकिन एक स्पष्टीकरण तो यहाँ पर अधिकांश उत्तर प्रश्न का उत्तर नहीं देते हैं। यह अभी भी समस्या के लिए एक उपयोगी और प्रासंगिक रूप से उपयुक्त जोड़ है, लेकिन अगर अधिक उपयुक्त हो तो मैं इसे एक टिप्पणी पर स्थानांतरित कर सकता हूं।
कोडिंगलुमिस

ओह रुको, मैं टिप्पणी नहीं जोड़ सकता क्योंकि मेरे पास 50+ की प्रतिष्ठा नहीं है, इसलिए इसे यहां रहना होगा।
कोडिंगलुमिस

correct rsync flags> और वो क्या होंगे?
ओल्डमड0

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

0

मुझे यह समस्या थी rsnapshot, जो बैकअप के लिए rsync का उपयोग करता है। मैंने इसे हटा --relativeदिया rsync_long_args। उसके बाद cअजीब अनुमतियों के साथ डिस्क के लिए फ़ोल्डर बनाता नहीं है।

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