2012-03-19 17 views
35

मेरे पास एक टेक्स्ट फ़ाइल है जिसमें फाइलों और निर्देशिकाओं की सूची शामिल है जिन्हें मैं प्रतिलिपि बनाना चाहता हूं (एक पंक्ति पर एक)। अब मैं चाहता हूं कि इस इनपुट को मेरी टेक्स्ट फ़ाइल से ले जाएं और इसे मेरे द्वारा प्रदान किए जाने वाले गंतव्य तक सिंक करें।फ़ाइल से इनपुट पढ़ें और तदनुसार

मैं कोशिश की rsync की "--include-from=FILE" और "--file-from=FILE" विकल्पों के साथ प्रयोग करना है, लेकिन यह सिर्फ काम नहीं कर रहा

मैं अपने फ़ाइल में प्रत्येक पंक्ति पर पहले से तय "+" लेकिन फिर भी यह काम नहीं कर रहा करने की कोशिश की।

मैं के रूप में rsync आदमी पेज में दिए गए लेकिन यह अभी भी काम नहीं कर रहा विभिन्न फिल्टर पैटर्न के साथ आ रहा है की कोशिश की है।

क्या कोई मुझे इस उपयोग के मामले के लिए सही वाक्यविन्यास प्रदान कर सकता है। मैंने फेडोरा 15, आरएचईएल 6.2 और उबंटू 10.04 पर उपर्युक्त चीजों की कोशिश की है और कोई भी काम नहीं करता है। तो मैं निश्चित रूप से कुछ याद कर रहा हूँ।

बहुत धन्यवाद।

+1

आप वास्तव में सिर्फ अपने सटीक आदेश दिए गए हैं की कोशिश की है पोस्ट करना चाहिए। – jdi

+3

अच्छा सवाल है, लेकिन यह वास्तव में प्रोग्रामिंग से संबंधित नहीं है - यह शायद सुपर उपयोगकर्ता या सर्वर फॉल्ट पर है, न कि स्टैक ओवरफ़्लो। –

उत्तर

68

इस प्रश्न का उत्तर देने के लिए एक से अधिक तरीके हैं कि आप इन फ़ाइलों को कॉपी करना चाहते हैं। ... इस पथ / के स्रोत स्थान के सापेक्ष होने की अपेक्षा करेंगे

rsync -av --files-from=/path/to/files.txt//destination/path/

और बनाए रखने के लिए होगा: अपने इरादे पूर्ण पथ के साथ फ़ाइल सूची की प्रतिलिपि करने के लिए है, तो यह कुछ इस तरह लग सकता है उस गंतव्य के तहत पूरी पूर्ण संरचना।

अपने लक्ष्य पथ पदानुक्रम (सिर्फ फाइलों का एक संग्रह) के किसी भी प्रकार के संरक्षण के बिना, गंतव्य के लिए सूची में वे सभी फ़ाइलें कॉपी करने के लिए है, तो आप निम्न में से एक कोशिश कर सकते:

# note this method might break if your file it too long and 
# exceed the maximum arg limit 
rsync -av `cat /path/to/file` /destination/ 

# or get fancy with xargs to batch 200 of your items at a time 
# with multiple calls to rsync 
cat /path/to/file | xargs -n 200 -J % rsync -av % /destination/ 

या एक के लिए लूप और कॉपी बनाएं:

# bash shell 
for f in `cat /path/to/files.txt`; do cp $f /dest/; done 
+0

जेडीआई, जानकारी के लिए धन्यवाद। मैं अपने भविष्य के उपयोग के लिए इसे आसान रखूंगा। – slayedbylucifer

+0

हालांकि, मैंने अपने उपयोग के मामले के लिए rsync का उपयोग किया है। – slayedbylucifer

+0

क्या आप कह रहे हैं कि यह आपके प्रश्न का उत्तर नहीं दे रहा है? – jdi

4

एक फ़ाइल लिस्टिंग $ HOME दिया गया/प्राप्त/bringemback

युक्त 10

cd $ HOME/प्राप्त

रन

rsync -av --files-from=./bringemback [email protected]:. $HOME/GET/collect 

फ़ाइलों और उन्हें $HOME/GET/collect

$HOME/GET/ 
      collect/ 
        need/A 
        alsoneed/B 
        shouldget/C 

या तो मेरा मानना ​​है कि में छोड़ जाएगा।

उपयोगी

+3

बस एक सुधार विकल्प होना चाहिए '' '--files-से =' '' और नहीं '' '----files''' से। तो सही उदाहरण: '' 'rsync -av --files-from =।/Bringemback me @ theremote:। $ HOME/प्राप्त/collect''' – jeffchan

2

rsync इस देशी रूप का समर्थन करता है:

rsync --recursive -av --files-from=/path/to/files.txt//destination/path/

संबंधित मुद्दे