रुकावट के लिए Rsync?


6

मेरे पास rsync प्रोटोकॉल (केवल rsync, और कुछ नहीं) के माध्यम से बैकअप सर्वर तक पहुंच है। अब, मैं वहां से फाइल लाना चाहता हूं (जो कि .tar.gz) है और इसे स्थानीय फाइल सिस्टम में आर्काइव को सेव किए बिना सीधे टार कमांड को पास कर सकते हैं।

कल्पना करने के लिए, ssh पहुँच के साथ मैं कर सकता था:

ssh remote_host cat backup.file.tar.gz | tar xzf -

और मैं स्थानीय रूप से असम्पीडित बैकअप प्राप्त करूंगा, स्थानीय मशीन पर .tar.gz को स्टोर किए बिना।

क्या rsync का उपयोग करते समय इसे प्राप्त करना संभव है?

linux  shell  rsync  tar  pipe 

जवाबों:


3

आम तौर पर आप सिर्फ एक नामित पाइप का उपयोग कर सकते हैं, जैसे:

mkfifo mypipe
tar xzf mypipe &
rsync --inplace server:/remote/file.tar.gz mypipe

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


उत्तर चेकमार्क। @ user7385
मैकटव

1

इसे छोटा करने के लिए: आप नहीं कर सकते। rsync मतभेदों का पता लगाने के लिए rsync (क्लाइंट- और सर्वर साइड) के 2 उदाहरणों के बीच बात करके काम करता है। टार 'rsyncish' बोलने में सक्षम नहीं है।


लेकिन क्लाइंट में से कोई भी (सैद्धांतिक रूप से) फाइल के बजाय पाइप करने के लिए किसी तरह लिख सकता था।

3
Rsync प्रोटोकॉल के लिए द्वि-दिशात्मक संचार की आवश्यकता होती है - एकल चैनल पर पूर्ण द्वैध। पाइप के साथ यह संभव नहीं है, वे केवल सरल हैं। सभी rsync कभी भी stdout को भेजता है स्थिति की जानकारी।
डेविड स्पिललेट

सुनिश्चित नहीं है कि rsync प्रोटोकॉल का आउटपुट के साथ क्या करना है। मैं राल के साथ rsync को बदलने के बारे में बात नहीं कर रहा हूँ। मैं rsync क्लाइंट राइट फ़ाइल बनाने के बारे में बात कर रहा हूं (उदाहरण के लिए --whole- फ़ाइल विकल्प के साथ डाउनलोड किया गया, पाइप को चेक और चेकसम चेक को रोकने के लिए), फ़ाइल करने के लिए नहीं।

0

मुझे ऐसा नहीं लगता, लेकिन आप उपयोग करने में सक्षम हो सकते हैं scp:

scp file /dev/stdout

मानक आउटपुट में फ़ाइल की प्रतिलिपि बनाएगा। आप फ़ाइल के स्रोत के लिए आवश्यक दूरस्थ उपयोगकर्ता और होस्ट जानकारी को कमांड लाइन के तर्कों में जोड़ सकते हैं scp


जैसा कि मैंने उल्लेख किया है: मेरे पास ssh / scp नहीं है। बस rsync पहुँच।

2
@depesz: क्षमा करें, मैंने यह नहीं देखा कि आपने कहां उल्लेख किया है।
डेनिस विलियमसन

"मेरे पास rsync प्रोटोकॉल के माध्यम से बैकअप सर्वर तक पहुंच है।" मैंने ssh द्वारा पहुँच का उल्लेख नहीं किया क्योंकि मेरे पास यह नहीं है। मैंने अन्य प्रोटोकॉल का भी उल्लेख नहीं किया है - मेरे पास केवल rsync है।

0

rsync केवल rsh या ssh प्रोटोकॉल है। यदि आप ssh का उपयोग नहीं कर रहे हैं, तो इसे rsh का उपयोग करना चाहिए। बस rsh आदेश के साथ ssh विकल्प:

rsh Remote_host cat backup.file.tar.gz | टार ज़ज़फ़ -


1
rsync केवल rsync-प्रोटोकॉल हो सकता है। जो कुछ भी संभव हो, वह इसे बोलता है।
अकीरा

@akira, डेमॉन मोड में, हाँ मैं यह भूल गया कि यह पोर्ट 873 को सुनता है। इसे rsh या ssh का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है, बिना डेमन रनिंग के।
टीडी 1

1
@ तैम देइचेलोहरर: नहीं, हमेशा। अगर यह ssh के माध्यम से चलता है "डेमॉन" (बेहतर "प्रेषक") मांग पर निकाल दिया जाता है और स्टड / स्टडआउट के माध्यम से क्लाइंट से बात कर रहा है। read samba.anu.edu.au/rsync/how-rsync-works.html "प्रोसेस स्टार्टअप"
अकीरा

@ समय: मेरे पास rsh / ssh एक्सेस नहीं है - जैसा कि मैंने कहा - मेरे पास केवल rsync एक्सेस है।

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