निर्देशिका को स्थानांतरित करने के लिए sftp का उपयोग करना?


50

जब मैं निर्देशिका युक्त फ़ाइलों को स्थानांतरित करने के लिए sftp का उपयोग करने का प्रयास करता हूं, तो मुझे एक त्रुटि संदेश मिलता है:

skipping non-regular file directory_name

निर्देशिका में कुछ फ़ाइल और दो उपनिर्देशिकाएँ होती हैं।

मैं क्या गलत कर रहा हूं?

जवाबों:


48

sftp, जैसे, cpऔर scpआवश्यकता होती है कि जब आप किसी फ़ोल्डर (और उसकी सामग्री, स्पष्ट रूप से) की नकल करते हैं, तो आपको स्पष्ट रूप से यह बताना होगा कि आप फ़ोल्डर को -rविकल्प के साथ पुनरावर्ती रूप से स्थानांतरित करना चाहते हैं ।

इसलिए, -rकमांड में जोड़ें ।


2
पुट कमांड के बाद? अगर मुझे कोई "पुट: अवैध ध्वज -r" त्रुटि संदेश संदेश मिल रहा है। इसे मूल sftp कमांड में जोड़ने से भी काम नहीं चलता है।
डेसीज़

5
जब आप कनेक्ट कर रहे हों -r, तो sftpकमांड में जोड़ें । sftp -r user@host
केविन

1
@ केविन मुझे निम्न त्रुटि मिल रही है "sftp: अज्ञात विकल्प --r"
अमात्य

2
ओपनएसएसएच के एसएफटीपी में एक काफी लंबे समय तक चलने वाला बग है: किसी दूरस्थ सर्वर के लिए एक निर्देशिका की प्रतिलिपि बनाते समय, निर्देशिका स्वयं पहले से ही लक्ष्य सर्वर पर मौजूद होनी चाहिए अन्यथा स्थानांतरण एक गैर-स्पष्ट त्रुटि संदेश के साथ विफल हो जाएगा Couldn't canonicalise: No such file or directory:।
श्वेतवर्ण भेड़िया

5
कुछ इस तरह होना चाहिए:# sftp user@remote-host #> get -r remote-folder
hbinduni

20

मैं केवल सुझाव दे सकता हूं, आप उपयोग करें rsync। यह कुछ हद तक उद्योग मानक है, जब सुरक्षित कनेक्शन पर फाइलें चलती हैं।

rsync -alPvz ./source_dir server.com:destination_dir

यह वही है जो मैं वर्षों से उपयोग कर रहा हूं।

( -aविकल्प निर्देशिका पुनरावृत्ति जैसी चीजों का ध्यान रखता है)


3
उल्लेख किए गए मापदंडों पर थोड़ा सा स्पष्टीकरण: -a= पुनरावृत्ति + प्रतीकात्मक लिंक, अनुमतियाँ, संशोधन समय, मालिक, समूह, विशेष फ़ाइलें और डिवाइस फ़ाइलों को रखें (उत्तरार्द्ध को सुपर-उपयोगकर्ता विशेषाधिकारों की आवश्यकता है); -l= प्रतीकात्मक लिंक रखना (पहले से ही शामिल है -a); -P= स्थानांतरण के दौरान प्रगति दिखाएं + आंशिक रूप से स्थानांतरित फ़ाइलों को रखें; -v= वर्बोज़ मोड (हालांकि -Pएक अजीब (बग? protocol version mismatchत्रुटि) से बचने के लिए उपयोग करते समय यह अनिवार्य लगता है ; -z= स्थानांतरित डेटा का संपीड़न सक्षम करें।
श्वेतवर्ण भेड़िया

@WhiteWinterWolf यह संस्करण निर्भर करता है कि -lस्विच का उपयोग किया जाना है या नहीं। मुझे याद है कि पुराने संस्करणों -lमें शामिल नहीं था -a
पोलीमोन

5

आप उपयोग करने में सक्षम भी हो सकते हैं scp। सामान्य प्रारूप है

scp -rp sourceDirName username@server:destDirName

scp"सुरक्षित प्रति" का अर्थ है। झंडे हैं

  • -r उपनिर्देशिकाओं में पुनरावृत्ति
  • -p संशोधन बार संरक्षित करें

मेरा मानना ​​है कि बाकी आइटम स्व-व्याख्यात्मक हैं


और SCP -rp -पी <बंदरगाह> .... जब एक गैर मानक पोर्ट का उपयोग कर
पान्चो

4

यह मेरे लिए काम करता है:

1) sftpदूरस्थ होस्ट के माध्यम से कनेक्ट करें

2) आप जिस दूरस्थ निर्देशिका को कॉपी करना चाहते हैं, उसे बदल दें। (उदाहरण: सीडी संगीत)

3) आप जिस स्थानीय निर्देशिका में सामान की प्रतिलिपि बनाना चाहते हैं, उसे बदल दें। (उदाहरण: एलसीडी डेस्कटॉप)

4) यह आदेश जारी करें: get -r *


4

यदि rsyncकोई विकल्प नहीं है, तो मैं इसकी सिफारिश करूंगा lftp:

lftp sftp://user@host.com/path/path/

फिर mirrorकमांड का उपयोग इस तरह पुन: अपलोड करने के लिए करें:

mirror -R

(ध्यान दें कि प्रत्यावर्तन डिफ़ॉल्ट है। -Rके लिए है रिवर्स - डाउनलोड करने के बजाय दर्पण आदेश अपलोड करने के लिए जोड़ने का प्रयास करें। --dry-runयकीन है कि यह कर रहा है कि आप क्या उम्मीद करने के लिए एक परीक्षण करने के लिए।)

या पुनरावृत्ति के बिना अपलोड करने के लिए:

mirror --no-recursion

आपको cdउन निर्देशिकाओं में जाना होगा जिन्हें आप दर्पण करना चाहते हैं। बहुत अच्छा काम करता है!


2

यदि आप कर सकते हैं, तो sshfs का उपयोग करें । यह एक FUSE फाइल सिस्टम है, जो अधिकांश आधुनिक यूनियनों पर उपलब्ध है, और किसी भी SFTP सर्वर के साथ काम करता है। यह एक दूरस्थ फाइल सिस्टम है: यह आपको सामान्य उपयोगिताओं के साथ दूरस्थ फाइलों (एसएफटीपी प्रोटोकॉल पर) में हेरफेर करने की अनुमति देता है।

mkdir /mount/point
sshfs server.example.com:/remote/path /mount/point
ls /mount/point
cp -Rp /mount/point/somedir /local/location
fusemount -d /mount/point

0

यह एक कीचड़ है, लेकिन मेरे लिए क्या काम करता है:

  1. sshरिमोट मशीन में लॉगिन करने के लिए उपयोग करें
  2. sftpरिमोट मशीन से अपने स्थानीय मशीन का उपयोग करें
  3. फिर डायरेक्टरी और उसकी सभी फाइलों को स्थानांतरित करने getके -rविकल्प के साथ कमांड का उपयोग करें।

1
-r के साथ काम न करेंsftp> get -r data /opt/bin get: Invalid flag -r
स्काइनेट

0

यदि आप सवाल करते हैं कि 'मैं निर्देशिका को स्थानांतरित करने के लिए sftp का उपयोग कैसे करूं', तो

 sftp -r user@server

लेकिन अगर आप एक निर्देशिका को स्थानांतरित कर रहे हैं, तो मैं आपकी आवश्यकताओं के आधार पर दो बेहतर विकल्प सुझा सकता हूं। sftpएक ssh- जैसे कमांड प्रॉम्प्ट में दूरस्थ सर्वर में लॉग इन करने की आवश्यकता होती है, लेकिन यदि आप चाहते हैं कि फ़ाइल (s) है, तो आसान और तेज तरीके हैं।

SCP

एक बार स्थानांतरण के लिए, कोशिश अपलोड करने के लिए:

 # upload source directory to remote server
 scp -rp source_dir user@server:dest

 #download directory from remote server:
 scp -rp user@server:source_dir dest

 #specifying ssh key:
 scp -rp -i ~/.ssh/key user@server:source_dir dest

 #remote directory has spaces
 scp -rp -i ~/.ssh/key user@server:"source\\ dir" dest

rsync

यदि आप नियमित आधार पर निर्देशिकाओं को सिंक्रनाइज़ करने की योजना बनाते हैं, तो rsync का उपयोग करना अधिक समझ में आता है। यह दो निर्देशिकाओं के बीच में देरी करता है, जिससे तार पर स्थानांतरण समय और डेटा की बचत होती है।

rsync -r -a -v -e ssh --delete source_dir user@server:dest

यहाँ कुछ सबसे आम rsync विकल्पों की सूची दी गई है: ( यहाँ से लिया गया )

  • --delete - प्रेषक (सिस्टम) पर मौजूद फ़ाइलों को हटाएं
  • -v - क्रिया (-vv अधिक विस्तृत जानकारी प्रदान करेगा)
  • - "ssh विकल्प" - ssh को दूरस्थ शेल के रूप में निर्दिष्ट करें
  • -a - संग्रह मोड - यह अनुमतियों (मालिकों, समूहों), समय, प्रतीकात्मक लिंक और उपकरणों को संरक्षित करता है
  • -r - निर्देशिकाओं में पुनरावृत्ति
  • -z - स्थानांतरण के दौरान फ़ाइल डेटा को संपीड़ित करें
  • --exclude 'foldername' - स्थानांतरण से संबंधित फ़ोल्डर को बाहर करता है
  • - स्थानांतरण के दौरान प्रगति दिखाएं

उम्मीद है की वो मदद करदे!


0

आप सर्वर से अपने स्थानीय पथ पर जा सकते हैं

scp -rp user@server:directoryname(full path) .

क्या इससे कोई नई जानकारी मिलती है जो पहले से ही पोस्ट किए गए अन्य उत्तरों के लिए है?
15:75 पर 41754

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