बाइनरी फ़ाइलों के लिए msysgit से rsync का उपयोग करना


22

मेरे पास तीन विंडो बॉक्स हैं जो विभिन्न तरीकों से मेरे नेटवर्क पर एक लिनक्स बॉक्स से जुड़े हुए हैं (एक के लिए स्थानीय नेटवर्क है, एक लैपटॉप है और स्थानीय हो सकता है या नहीं हो सकता है, और दूसरा मेरा काम डेस्कटॉप है)। मैं वर्तमान में अपने अधिकांश सामान को बॉक्स के बीच (सर्वर के रूप में लिनक्स बॉक्स का उपयोग करके) सिंक करने के लिए git का उपयोग कर रहा हूं और यह एक विजेता की तरह काम करता है।

अब, हालांकि, मैं अपने एमपी 3 संग्रह (12 गिग्स) को बॉक्स के बीच कुशलता से सिंक्रनाइज़ करने के लिए जोड़ना चाहूंगा। मैंने शुरू में सोचा था कि मैं इसके लिए git का उपयोग कर सकता हूं, लेकिन ऐसा लगता है कि rsync एक बेहतर विकल्प होगा क्योंकि मुझे वास्तव में सभी ऐतिहासिक सामान की आवश्यकता नहीं है। चूँकि मेरी सभी मौजूदा प्रबंधन स्क्रिप्ट git bash (cygwin के बजाय) के अंतर्गत चलती हैं, मैं इसे git bash (MINGW32 को विंडो के टाइटल बार में कहते हैं) से उपयोग करने में सक्षम होना चाहूँगा। क्या मैं इसे सिगविन में डाउनलोड कर सकता हूं और इसे कॉपी कर सकता हूं या इसके पास पहुंचने का एक बेहतर तरीका है? लिनक्स बॉक्स उबंटू सर्वर संस्करण का नवीनतम संस्करण चला रहा है - क्या मुझे rsync को सही ढंग से काम करने के लिए सक्षम करने के लिए इसे कुछ भी करने की आवश्यकता है?

मुझे पता है कि मैं शायद थोड़ा कठिन तरीके से ऐसा कर रहा हूं, लेकिन मैं अपने कमांडलाइन कौशल में सुधार करने के लिए एक अभ्यास के रूप में भी इसका उपयोग कर रहा हूं। कोई सुझाव?


मैं अपने साइबरविन शेल से rsync का उपयोग कर सकता हूं, लेकिन msysgit से नहीं। मैंने साइबरफ़ोन के बिन फ़ोल्डर से msysgit के बिन फ़ोल्डर पर rsync.exe की प्रतिलिपि बनाने की कोशिश की, लेकिन यह अभी भी नहीं मिल रहा है। क्या मुझे इसे स्थापित करने के लिए कुछ और कदम उठाने होंगे? यह अजीब है कि मुझे एक त्रुटि मिल रही है कि वह मुझे फ़ाइल नहीं दे सकती है, इसके बजाय मुझे एक त्रुटि दे रही है कि फ़ाइल की निर्भरता गायब है।

जवाबों:


25

अब तक (9/7/2017) विंडोज एसडीके के लिए जीआईटी चलाने का सहारा लेने के बिना विंडोज वातावरण के लिए जीआईटी के लिए rsync समर्थन को मैन्युअल रूप से जोड़ना बेहद आसान है।

मैं इस पद पर लड़खड़ाया और यह नहीं सोचा कि यह वास्तव में सभी विकल्पों को देखते हुए आसान हो सकता है, लेकिन यह वास्तव में है। आपको बस MSYS2 पैकेज रिपॉजिटरी से rsync पैकेज को हथियाने और rsync.exeफ़ाइल को निकालने की आवश्यकता है C:\Program Files\Git\usr\bin। एक और किया। यह काम करता हैं।

यदि आपको rsync.exersync पैकेज (जो tar.xzप्रारूप में है) से निकालने में सहायता की आवश्यकता है , तो आप या तो 7zip जैसी संपीड़न उपयोगिता का उपयोग कर सकते हैं या इसे सीधे Windows bash वातावरण के लिए Git में कर सकते हैं:

cd /c/downloaded_location
tar -xvf rsync.pkg.tar.xz usr/bin/rsync.exe --strip-components=2

यह आपको rsync.exeडाउनलोड किए गए स्थान में फ़ाइल देता है (पैकेज नाम तदनुसार समायोजित करें)। Windows अनुमतियों के मुद्दों के प्रकाश में मैं C:\Program Files\Git\usr\binफ़ोल्डर में exe प्राप्त करने पर विशिष्ट आदेश देने की कोशिश नहीं करूंगा । आप इसे एक खोजकर्ता GUI के माध्यम से या एक उन्नत कमांड लाइन उपयोगिता के माध्यम से कॉपी कर सकते हैं (और हाँ, इसे प्रोग्राम फ़ाइल फ़ोल्डर में कुछ कॉपी करने के लिए व्यवस्थापक स्तर की अनुमति की आवश्यकता होगी)।

यदि आप भी ss पर rsync के साथ पेजेंट प्रमाणीकरण का उपयोग करना चाहते हैं, तो ssh-pageant बाइनरी पहले से ही Git for Windows में स्थापित है और आपको बस इतना करना है कि अपनी ~/.bashrcया ~/.bash_profileफ़ाइल में एक छोटा सा जोड़ें (देखें ssh-pageant उपयोग अनुभाग और Git के लिए विंडोज विकी )। मैंने इसे विशेष रूप से विंडोज पर्यावरण के लिए Git के साथ उपयोग करने के लिए संशोधित किया है और इसे एक गुम सॉकेट फ़ाइल के लिए कुछ पहचान के साथ बढ़ाया है:

# ssh-pageant allows use of the PuTTY authentication agent (Pageant)
SSH_PAGEANT="$(command -v ssh-pageant)"
if [ -S "$SSH_AUTH_SOCK" ]; then
  PAGEANT_SOCK=$SSH_AUTH_SOCK
else
  PAGEANT_SOCK=${TEMP:-/tmp}/.ssh-pageant-$USERNAME
fi
if [ -x "$SSH_PAGEANT" ]; then
  eval $("$SSH_PAGEANT" -qra "$PAGEANT_SOCK")
fi
unset SSH_PAGEANT
unset PAGEANT_SOCK

मैं यह नहीं बोल सकता कि अन्य उपयोगिताएँ इस तरह से मैन्युअल रूप से स्थापित करके काम नहीं कर सकती हैं या नहीं, लेकिन rsync बस ठीक काम करता प्रतीत होता है। उम्मीद है कि रेपो बने रहेंगे और अपडेट होते रहेंगे - मुझे ऐसा लगता है क्योंकि यह आधिकारिक MSYS2 साइट पर होस्ट किया गया है।


1
धन्यवाद सर,
डाउनलोडिंग

संकट। स्वरूपों rsync.exeमें rsync के केवल विभिन्न संस्करण नहीं हैं .pkg.tar.xz। यह ठीक हो सकता है, सिवाय इसके कि मैं स्थापित नहीं कर सकता apt-get install xz-utils( sudo apt-get install xz-utils) क्योंकि मैं न तो स्थापित कर सकते हैं sudoया apt-getविंडोज के लिए Git बैश के लिए :-( और इस प्रकार इस प्रकार स्थापित नहीं कर सकता xz-utils। वहाँ इस के आसपास कोई तरीका है? वहाँ एक नए लिंक मैं कहाँ मिल सकता है है rsync.exe, या किसी भी तरह से मैं इस .xz फ़ाइल को अनफिट करने के लिए Git Bash प्राप्त कर सकता हूँ?
SherylHohman

वास्तव में, यह अधिक अनुमतियों की समस्या लगती है। जब मैं tar -xf rsync-3.1.3-1-x86_64.pkg.tar.xz, मैं बताते हुए संदेशों के एक गुच्छा मिलता है: Cannot open: Permission denied, Cannot mkdir: Permission denied, Cannot mkdir: No such file or directoryऔर Cannot open: No such file or directoryविभिन्न फ़ाइलें / निर्देशिका के लिए। हो सकता है कि Git Bash पहले से ही जानता हो कि xzफाइलों को कैसे अनकैप किया जाए ? लेकिन अनुमति के b / e नहीं कर सकते? मैं उपयोग या स्थापित नहीं कर सकता sudo। Git बैश करने के लिए।
शेरिलहोमन

मान लें कि आपने अपने डाउनलोड फ़ोल्डर में tar.xz फ़ाइल डाउनलोड की है, तो आप इसे Git Bash से अनपैक कर सकते हैं:cd / && tar Jxvf /c/Users/$USR/Downloads/rsync-3.1.3-1-x86_64.pkg.tar.xz
hansfn

@SherylHohman आपको पैकेज फ़ाइल से मैन्युअल रूप से एक्साई निकालना होगा। केवल C:\Program Files\Git\usr\binफ़ोल्डर में exe छोड़ने के अलावा कोई "स्थापना" आवश्यक नहीं है ।
18

7

मुझे पता है कि सवाल "MSYS के लिए rsync का उपयोग करना" नहीं है, लेकिन मुझे लगता है कि यह उल्लेख प्रासंगिक है:

"मिनगॉव शेल" (जिसे पहले "MSYS (बेसिक सिस्टम)" के रूप में जाना जाता था) वास्तव में rsync है। मैं उस शेल / सिस्टम को जितनी बार संभव हो इस्तेमाल कर रहा हूं क्योंकि यह साइगविन से बहुत छोटा है। (मैं शायद केवल एक ही है कि इन दिनों फ़ाइल आकार के बारे में परवाह है।)

"Git for Windows" / "Git Bash" आसानी से rsync जोड़ सकता है क्योंकि यह MinGW / MSYS पर आधारित है और इसका उल्लेख मेलिंग सूची में पहले किया जा चुका है।

पुनश्च! यदि आपके MinGW शेल में rsync नहीं है, तो इसे जोड़ने के लिए "mingw-get install msys-rsync" चलाएं।

25 मार्च 2016 की अपडेट की गई:

विंडोज के लिए Git अब MSYS2 का उपयोग करता है। और MSYS2 पैकेजों को स्थापित करने के लिए "मैकमैन" का उपयोग करता है, न कि "मिंगव-गेट" का। दुर्भाग्य से, "Git for Windows" में pacman शामिल नहीं है ... दो विकल्प हैं:

  1. विंडोज एसडीके के लिए गिट स्थापित करें (जिसमें पैक्मैन भी शामिल है)।
  2. MSYS2 के अंदर Git इंस्टॉल करें।

अंतिम विकल्प मेरा पसंदीदा है, लेकिन यह अभी तक सुव्यवस्थित नहीं है इसलिए पहला विकल्प शायद आसान है। उम्मीद है, इसे ठीक कर लिया जाएगा

पुनश्च! मैंने MSYS2 / pacman के साथ ज्यादा नहीं खेला है, लेकिन यह बहुत आशाजनक लगता है।

अपडेटेड 7 अगस्त 2019:

यदि आप Windows के लिए Git (Git Bash) का उपयोग कर रहे हैं, तो MSYS2 पैकेज रिपॉजिटरी से rsync पैकेज को हड़पना बहुत बेहतर है, जैसा कि ऊपर दिए गए उत्तर में वर्णित है ।


$ mingw-get bash: mingw-get: command not found
दु

हां, यह थोड़ा दुखद है। ऊपर मेरे अद्यतन उत्तर को देखें - अभी भी दुखी हैं, लेकिन स्थिति में सुधार हुआ है।
हंसफर्न

मैं दूसरे विकल्प के लिए गया था और मैंने 2.17 जीबी फ़ोल्डर के साथ समाप्त किया, लेकिन सब कुछ एक आकर्षण की तरह काम करता है। मैंने उपयोग करके rsync स्थापित किया pacman -S rsync। अतीत में मैंने साइगविन का इस्तेमाल किया था, लेकिन मुझे लगता है कि MSYS2 कमाल का है, मुझे अतिरिक्त पैकेज स्थापित करने के लिए एक gui चलाने की आवश्यकता नहीं है।
एडेनशॉ

इस उत्तर में सूचीबद्ध बग रिपोर्ट तब से "अक्षम्य" के रूप में बंद हो गई है - हालांकि, मैंने विंडोज के लिए गिट के साथ rsync शामिल करने के लिए एक पुल अनुरोध बनाया है ।
स्कॉट स्टीवंस

विकल्प 1 या विकल्प 2 में से कोई लिंक कैसे करें? मुझे लगता है कि मेरे पास Windows SDK के लिए Git है। पता नहीं। लेकिन मुझे लगता है, या यह कर सकते हैं .. तो क्या? यदि नहीं, तो मुझे पता नहीं है कि MSYS2 के अंदर Git को स्थापित करने का क्या मतलब है। इसका मतलब है कि मुझे अपने वर्तमान Git इंस्टॉल को हटाने की आवश्यकता है। यदि मैं ऐसा करता हूं तो क्या मैं किसी चीज को ढीला कर दूंगा, जैसे कि सेटिंग्स या कार्यक्षमता। क्या नाड़े टूटेंगे?
शेरिलहोमन

2

मुझे लगता है कि git bashआप वास्तव में मतलब है msysgit, उर्फ ​​"खिड़कियों के लिए पकड़ "। स्टार्ट मेन्यू विकल्प है git bash, जो आपके द्वारा उपयोग किए गए नाम की व्याख्या करता है।

सबसे पहले, आप यहां एक विकल्प के रूप में गिट को खारिज करने में सही हैं। एक चीज़ जो अच्छी तरह से नहीं करती है वह बाइनरी फ़ाइलों को संभालती है - और आप एक विशाल, ब्लॉटेड भंडार के साथ समाप्त करेंगे। इसके अतिरिक्त, चूंकि आप परिवर्तनों को नहीं संभालेंगे, इसलिए गिट के ओवरहेड का उपयोग करने से मुझे ओवरकिल के रूप में चोट लगी है।

दूसरे, ऐसा लगता है कि सवाल आप वास्तव में पूछ रहे हैं, "क्या मैं msysgit / Windows से rsync का उपयोग कर सकता हूं?" संक्षिप्त उत्तर है, बॉक्स से बाहर नहीं। msysgitफॉर्म और फ़ंक्शन के संदर्भ में वास्तव में सिर्फ विंडोज कमांड लाइन है। कहा जा रहा है कि, आपके पास दो विकल्प हैं: अपने विंडोज मशीन पर rsync को सक्षम करने के लिए एक तृतीय-पक्ष उपकरण डाउनलोड करें ( Stack Overflow: Rsync for Windows ), या सिर्फ cygwin का उपयोग करें। वास्तव में, उनके पास एक ही परिणाम है - इसलिए इसका फैसला आप पर करना है कि कौन सा बेहतर काम करता है।


मैं अपने साइबरविन शेल से rsync का उपयोग कर सकता हूं, लेकिन msysgit से नहीं। मैंने साइबरफ़ोन के बिन फ़ोल्डर से msysgit के बिन फ़ोल्डर पर rsync.exe की प्रतिलिपि बनाने की कोशिश की, लेकिन यह अभी भी नहीं मिल रहा है। क्या मुझे इसे स्थापित करने के लिए कुछ और कदम उठाने की आवश्यकता है? यह अजीब है कि मुझे एक त्रुटि मिल रही है कि यह फ़ाइल मुझे नहीं मिल सकती है, इसके बजाय मुझे एक त्रुटि दे रही है कि फ़ाइल की निर्भरता गायब है। धन्यवाद, विल
विल Gant

यह संभव नहीं है। साइबरविन जीएनयू-आधारित वातावरण सेट करता है, जिसमें लिनक्स जैसे पुस्तकालय, कॉन्फ़िगरेशन आदि शामिल हैं। msysgitविंडोज कमांड लाइन है, जो विंडोज निष्पादन योग्य का समर्थन करती है। क्या होने की संभावना है, इसके निष्पादन योग्य के रूप में फ़ाइल का पता लगाने में सक्षम नहीं है। सीधे शब्दों में कहें, साइबरविन और एमएससिट्ज भी दूर से संगत नहीं हैं।
एंड्रयू एम

यह संभवतया है लेकिन हैकी है। कॉपी करें cygiconv-2.dll, cygwin1.dllऔर rsync.exeCygwin से अपने msysgit पथ पर। और कुछ नहीं (विशेष रूप से ssh.exe नहीं)। समस्या आमतौर पर Git SSH और Cygwin / rsync SSH के बीच असंगतता है। एक ही संस्करण रखने की कोशिश करें। आपके पास अभी भी समस्याएँ होंगी, /cygdrive/लेकिन मेरे पास इसके अलावा कोई हल नहीं है cd
वार्नाट

0

इसके लायक होने के लिए, मुझे बिन रास्ते में गिराए जाने के दौरान msysgit में काम करने के लिए cwRsync के समान समस्याएं आ रही थीं , लेकिन बहुत सारी अलग-अलग चीजों की कोशिश करने के बाद अंततः पाया गया कि बस विंडोज के लिए Git के नवीनतम संस्करण (2.10.2) में अपडेट किया गया है। मुद्दा।


cwRsync $ 19 साल है / itefix.net/cwrsync
SherylHohman

0

rsync यूनिडायरेक्शनल सिंक के लिए बहुत अच्छा है। आप या तो साइबरविन के तहत rsync चला सकते हैं, या विंडोज के लिए डेल्टाकॉपी भी है

यदि आप द्विदिश सिंक करना चाहते थे, तो यूनिसन पर एक नज़र डालें

एक क्रॉस प्लेटफ़ॉर्म डायरेक्टरी सिंक्रोनाइज़ेशन टूल के लिए, सिन्क्थिंग है जो अधिकांश प्लेटफार्मों पर चलता है।


unison बढ़िया है, लेकिन आपको इसे सर्वर पर इंस्टॉल करना होगा - जैसे 90% सर्वर rsync तैयार हैं। और ओपी ने rsync के लिए कहा
pscheit

ओपी ने rsync के बारे में पूछा, लेकिन ओपी क्या हासिल करने की कोशिश कर रहा था "बक्से के बीच कुशलता से सिंक्रनाइज़ होने के लिए", और
यूनिसन

ऐसा लगता है कि DeltaCopy विंडोज 10 के लिए उपलब्ध नहीं है। क्या अब इसका रखरखाव नहीं किया जाएगा?
शेरलहोमन

यह बताना मुश्किल है कि क्या Unison विंडोज 10 पर काम करता है। लंबे समय में अपडेट नहीं हुआ है। इस सॉफ्टवेयर का समर्थन करने वाले विंडोज ओएस के कौन से संस्करण हैं, इसका कोई उल्लेख नहीं है। कई मुद्दे फिर से हैं: विंडोज 10 github.com/bcpierce00/unison/…
शेरिलहोमन

इन दिनों सिंक में एक डायरेक्टरी स्ट्रक्चर रखने के लिए एक क्रॉस प्लेटफॉर्म टूल के रूप में, मैं सुझाव दूंगा syncthing syncthing.net हालाँकि 2011 में ....
shouldbeq931
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.