"Scp" कमांड का उपयोग करके केवल नई फ़ाइलों की प्रतिलिपि कैसे बनाएं?


24

मैं उस scpकमांड का उपयोग करके दूसरे कंप्यूटर पर सैकड़ों फाइलें कॉपी कर रहा था जो मुझे stalled त्रुटि मिली । अब मैं फिर से फाइल कॉपी करने जा रहा हूं। क्या पहले से कॉपी की गई फ़ाइलों को कॉपी करने से बचने का कोई तरीका है?

जवाबों:


40

आप rsyncइसके लिए उपयोग कर सकते हैं । rsyncवास्तव में इस प्रकार के ऑपरेशन के लिए डिज़ाइन किया गया है।

वाक्य - विन्यास:

rsync -avh /source/path/ host:/destination/path

या

rsync -a --ignore-existing /local/directory/ host:/remote/directory/

जब आप इसे पहली बार चलाते हैं तो यह सभी सामग्री को कॉपी कर देगा तब यह केवल नई फ़ाइलों को कॉपी करेगा।

यदि आपको एसएसएच कनेक्शन (उदाहरण के लिए, गोपनीयता उद्देश्यों के लिए) के माध्यम से यातायात को सुरंग करने की आवश्यकता है, जैसा कि आपके द्वारा मूल रूप से एससीपी-आधारित समाधान के लिए पूछ रहा है, बस -e sshमापदंडों में जोड़ें rsync। उदाहरण के लिए:

rsync -avh -e ssh /source/path/ host:/destination/path

क्या --ignore-existingवास्तव में आवश्यक है?
मेसम

क्योंकि मैनुअल के इस उदाहरण में: rsync -t *.c foo:src/-> "यह पैटर्न से मेल खाने वाली सभी फ़ाइलों को हस्तांतरित करेगा। *। वर्तमान निर्देशिका से निर्देशिका के लिए मशीन फू पर src। यदि कोई फाइल पहले से ही रिमोट सिस्टम पर मौजूद है तो rsync रिमोट- अद्यतन प्रोटोकॉल का उपयोग केवल अंतर भेजने के लिए फ़ाइल को अद्यतन करने के लिए किया जाता है "
मेसम

1
मैं आमतौर पर उपयोग करता हूं rsync -avuzh /source/path/ host:/destination/path। यह पूरी तरह से एक कमांड में काम करता है, और बाद के इनवोकेशन पर, केवल उन फ़ाइलों को स्थानांतरित करता है जिन्हें इसकी आवश्यकता होती है।
एडवर्ड फल्क

6

यदि आप किसी भी कारण से scp के साथ रहना चाहते हैं, तो आप अपने स्थानीय डेटा पर w अनुमतियाँ हटा सकते हैं (यदि आपके पास इसे करने का अधिकार है) और scp इसे स्पर्श नहीं करेगा। अधिक स्पष्ट करने के लिए:

  1. chmod a-w local/*.tar.gz (आपके स्थानीय डायर में)
  2. scp remote/*.tar.gz local

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


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

4

एससीपी के साथ ऐसा करने के बारे में कोई सटीक जवाब नहीं था, क्योंकि मूल सवाल यही था।

sudo find /files/ -type f -exec chmod a-w {} \;

scp -r username@server.com:/file/location/* /files

जब यह फ़ाइलों को कॉपी करने से अनुमतियाँ वापस बदल जाती हैं:

sudo chmod a+w -R /files


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