जवाबों:
आप 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
rsync -t *.c foo:src/
-> "यह पैटर्न से मेल खाने वाली सभी फ़ाइलों को हस्तांतरित करेगा। *। वर्तमान निर्देशिका से निर्देशिका के लिए मशीन फू पर src। यदि कोई फाइल पहले से ही रिमोट सिस्टम पर मौजूद है तो rsync रिमोट- अद्यतन प्रोटोकॉल का उपयोग केवल अंतर भेजने के लिए फ़ाइल को अद्यतन करने के लिए किया जाता है "
rsync -avuzh /source/path/ host:/destination/path
। यह पूरी तरह से एक कमांड में काम करता है, और बाद के इनवोकेशन पर, केवल उन फ़ाइलों को स्थानांतरित करता है जिन्हें इसकी आवश्यकता होती है।
यदि आप किसी भी कारण से scp के साथ रहना चाहते हैं, तो आप अपने स्थानीय डेटा पर w अनुमतियाँ हटा सकते हैं (यदि आपके पास इसे करने का अधिकार है) और scp इसे स्पर्श नहीं करेगा। अधिक स्पष्ट करने के लिए:
chmod a-w local/*.tar.gz
(आपके स्थानीय डायर में)scp remote/*.tar.gz local
यह बहुत कुशल नहीं है, अच्छा है, लेकिन अगर आपको scp के अलावा किसी और चीज़ में बदलाव किए बिना एक तेज़ अस्थायी समाधान की आवश्यकता हो, तो यह मदद कर सकता है। (कुडोस: गंतव्य में मौजूदा फ़ाइलों को बदलने के बिना scp )
एससीपी के साथ ऐसा करने के बारे में कोई सटीक जवाब नहीं था, क्योंकि मूल सवाल यही था।
sudo find /files/ -type f -exec chmod a-w {} \;
scp -r username@server.com:/file/location/* /files
जब यह फ़ाइलों को कॉपी करने से अनुमतियाँ वापस बदल जाती हैं:
sudo chmod a+w -R /files
--ignore-existing
वास्तव में आवश्यक है?