मैं सभी फ़ाइलों और निर्देशिकाओं की प्रतिलिपि कैसे करूँ, कुछ हद तक ssh को छोड़कर?


23

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

जवाबों:


19

rsyncठीक काम करता है, और ज्यादातर मामलों में, एसएसएच का उपयोग करता है स्वचालित रूप से यह परिवहन प्रोटोकॉल है। यह फ़ाइलों की तुलना करेगा और केवल उन लोगों को अपलोड करेगा जो बदल गए हैं - लेकिन आप उस पेड़ में फ़ाइलों को निर्दिष्ट करने के लिए एक बहिष्कृत सूची का भी उपयोग कर सकते हैं जिन्हें किसी भी तरह से पुन: उपयोग नहीं किया जाना चाहिए।


rsync स्वचालित रूप से SSH का उपयोग नहीं करता है - आपको ऐसा करने के लिए "-e ssh" झंडे की आपूर्ति करनी होगी।

4
हाँ यह करता है। रु। 2.6.0 जारी किया गया - डिफ़ॉल्ट रिमोट शेल अब "ssh" है जब तक आप यह नहीं बताएंगे कि आप कुछ और डिफ़ॉल्ट बनाना चाहते हैं। samba.org/rsync

12

आप rsync की कोशिश कर सकते हैं जो केवल उन फ़ाइलों को कॉपी करता है जो बदल गए हैं, यह भी ssh पर काम करता है।


9

का उपयोग करना rsync --excludeयहां अधिक स्पष्ट विकल्प है, लेकिन अगर आप वास्तव में केवल कुछ फाइलें या फ़ोल्डर्स भेजना चाहते हैं और बाहर करने के लिए कुछ विशिष्ट है, तो आप शेल ग्लबिंग का उपयोग कर सकते हैं scp। पहले सुनिश्चित करें कि आपके पास अपने शेल में सही ग्लोबिंग विकल्प हैं। बैश रन के लिए shopt -s extglobऔर zsh उपयोग के लिए setopt ksh_glob। फिर कुछ इस तरह:

scp /path/to/folder/!(tiny_mce|other_folder|*.bak) user@host:target_path

... दिए गए पैटर्न से मेल खाती चीजों के अलावा स्रोत फ़ोल्डर में सब कुछ कॉपी करेगा। जाहिर है आप उस हिस्से के साथ रचनात्मक हो सकते हैं।


7

rsync एक अच्छा समाधान है, लेकिन अगर आप एक विकल्प की तलाश कर रहे हैं:

मान लीजिए, हमारे पास एक निर्देशिका "परीक्षण" है जिसमें निर्देशिका "फू, बार, बाज" हैं। इन dirs में विभिन्न प्रकार के फ़ाइल का एक गुच्छा होता है:

test
|____bar
| |____1.jpg
| |____1.png
| |____1.txt
| |____2.jpg
| |____2.png
| |____2.txt
|____baz
| |____1.avi
| |____2.avi
| |____3.png
|____foo
| |____test.blah
|____test.txt

हम PNG को छोड़कर हर चीज को कॉपी करना चाहते हैं

scp $(find /location/of/test -type f ! -name "*.png") # -> Note the logical NOT!!

इस उदाहरण में, कमांड सभी फाइलों को एक ही गंतव्य निर्देशिका में डाल देगा - यह वह व्यवहार नहीं हो सकता है जिसे आप चाहते हैं।


1
ध्यान दें कि यह उत्तर केवल तभी काम करता है जब शामिल फ़ाइल और निर्देशिका नामों में कोई विशेष वर्ण (व्हॉट्सएप या \[*?) नहीं है।
गिल्स एसओ- बुराई को रोकें '

3

एक महान उपकरण जिसे आप आज़माना चाहते हैं, वह है "Lftp"।

lftp sftp://etc.etc/ 
lftp> ls 
    --- remote listing ---
lftp> mirror -R -n local/ remote/

तुम भी ssh पर RSync का उपयोग कर सकते हैं

rsync -avzp -e ssh /this/dir/  remoteuser@remotehost:/remote/dir/

कार्य करना चाहिए।


0

मैं तो बस समाप्त लेखन कैसे मैं पसंद सामंजस्य rsync के लिए यह बाद से किसी भी दिन,

  • परिवहन के लिए ssh के अलावा एक डेमॉन की आवश्यकता नहीं है
  • मुझे किसी भी समय फ़ाइलों को संशोधित करने देता है - कई स्वामी आसानी से, जबकि मुझे केवल एक तरफ से सिंक अनुरोध को धकेलने की आवश्यकता है
  • जब मैं मॉडेम, विशेषताओं / अनुमति, सॉफ्टलिंक आदि की बात करता हूं, तो मैं एक स्टिकर हूं; एक परियोजना के लिए मैं 4 दर्पणों का उपयोग करता हूं, एक एक साइबर होस्ट हो रहा है। मेरा उदाहरण crontab सेटअप देखें।
  • जैसे बहिष्करण का समर्थन करता है *.bak। मेरे कॉन्फ़िगर फ़ाइल में नमूने

0

सुरक्षित प्रतिलिपि का उपयोग करना - scp

scp -r file user@host:

कई फाइल कॉपी करने के लिए

scp /directory/* user@host:destinationPath

कुछ फाइलों को कॉपी करने के लिए

scp /directory/!(*.doc) user@host:destinationPath

यह .doc फ़ाइलों को छोड़कर निर्देशिका की सामग्री की प्रतिलिपि बनाता है


0

मैं निश्चित रूप से आपको rsync की सलाह दूंगा।

rsync -vra --exclude = "आप क्या बाहर करना चाहते हैं" -e ssh फ़ोल्डर उपयोगकर्ता @ रिमोटहोल: / फ़ोल्डर


0

जब मैंने इसे गंतव्य सर्वर से चलाया तो मेरे लिए यही काम किया।

rsync -av --progress user@servername:/sourcefolder /destinationfolder --exclude thefoldertoexclude

0

tiny_mceनिर्देशिका को अनदेखा करने के लिए हम इसे दो चरणों में कर सकते हैं । सभी निर्देशिकाओं को निचले मामलों के अक्षरों से शुरू करें।

scp -r USER@HOSTNAME:~/FOLDER/[a-s]* .
scp -r USER@HOSTNAME:~/FOLDER/[u-z]* .

इसके अलावा, USER, HOSTNAME और FOLDER को वास्तविक मानों में बदलें।

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