sftp: एक फ़ोल्डर में निहित सभी फाइलों, निर्देशिकाओं और उप-निर्देशिकाओं को अपलोड करें


27

मशीन एआई में फ़ोल्डर है

/home/a/

मशीन बीआई में फ़ोल्डर है

/home/b/

मैं सभी फाइलों, निर्देशिकाओं और / होम / ए / एस / बी / एसएफटीपी के साथ उप-निर्देशिकाओं को स्थानांतरित करना चाहता हूं।

sftp fibon82@machineB.com
put /home/a/* /home/b/

लेकिन यह काम नहीं करता है, मुझे त्रुटि संदेश मिलता है: "गैर-नियमित फ़ाइल / घर / a / a स्किप करना" ... [a1 एक उप-निर्देशिका है]
मैं पुट अनुदेश को कैसे संशोधित कर सकता हूं?

धन्यवाद! :)

संपादित करें:

मैंने scp का उपयोग करके हल किया:

scp -r /home/a/ fibon82@machineB.com:/home/b/

2
put -rभी काम किया होता।
वाकीमीको

1
ठीक है, लेकिन मुझे कैसे पता चल सकता है कि "पुट कमांड" के लिए विकल्प -r उपलब्ध है? अगर मैं यहाँ देखता हूँ तो केवल ध्वज-पी का वर्णन किया गया है ... मैनुअल में वही है धन्यवाद! :)
फाइबॉने 82

आपको इसके बजाय उत्तर के रूप में पोस्ट करना चाहिए।
एनएन

हाँ। अपने प्रश्न को उत्तर के साथ संपादित करने के बजाय, आपको अपने प्रश्न का उत्तर देना चाहिए और उसे स्वीकार करना चाहिए।

@ fibon82 ओपनएसएसएच के लिए अप-टू-डेट मैनुअल के लिए sftp, ओपनएसएसएच परियोजना देखें ।
मार्टिन प्रिक्रील

जवाबों:


21

हालांकि sftp के समान सख्ती से नहीं, rsync scp और sftp के लिए एक बहुत ही शक्तिशाली विकल्प है, खासकर जब मशीन A से मशीन B तक की प्रतियां अपडेट करते हैं, क्योंकि यह उन फ़ाइलों को कॉपी नहीं करता है जिन्हें बदला नहीं गया है; यह मशीन B से उन फ़ाइलों को हटाने में भी सक्षम है जिन्हें मशीन A से हटा दिया गया है (केवल जब यह पाठ्यक्रम को बताया गया है)।

आपके मामले में, वाक्यविन्यास होगा

rsync -zrp /home/a/ user@remote.host.com:/home/b/

-rविकल्प, रिकर्सिवली फ़ाइलों की प्रतिलिपि बनाने के लिए है -zस्थानान्तरण के दौरान संपीड़न सक्षम बनाता है, और -pफाइल अनुमति (फ़ाइल निर्माण, संपादित करें, आदि) की प्रतिलिपि बनाते है, जो कुछ है कि SCP AFAIK नहीं करता है बरकरार रखता है। कई और विकल्प संभव हैं; हमेशा की तरह, manपृष्ठों को पढ़ें ।


आह आपका धन्यवाद! :) एक नई बात जो मैंने सीखी!
फाइबॉने 82

@ fibon82: आपका स्वागत है :)
करोलोस

1
मैं तुमसे प्यार करता हूँ, मैं सिर्फ अपने कोड का उपयोग करके 1 मिनट में 400MB डेटा सिंक किया। मैं आपको यह भी जोड़ना चाहिए कि - आप का उपयोग करना चाहिए अन्यथा आप बिना कुछ जाने घूर रहे होंगे कि क्या हो रहा है (और किस गति से :))
Sandro Antonucci

1
दुख की rsyncबात नहीं है sftp-प्रोटोकॉल। तो अगर आप एक सेट sftpका उपयोग करते हैंsshinternal-sftp तो निर्माणrsync विफल रहता है।
टीनो

17

में sftpइस आदेश रिकर्सिवली दूरस्थ वर्तमान निर्देशिका के लिए वर्तमान निर्देशिका की सामग्री को अपलोड करता है:

 put -r .

देख लो man sftp


-rस्विच के बाद से समर्थित है OpenSSH 5.4 केवल।
मार्टिन प्रिक्रील

1
ध्यान दें कि -rस्विच क्लाइंट साइड (केवल sftpकमांड का हिस्सा ) है। तो सर्वर (यहां: प्राप्त करना) पक्ष को ओपनएसएसएच 5.4 की आवश्यकता नहीं है, केवल क्लाइंट को इसका समर्थन करने की आवश्यकता है।
तिनो

9

scp(सिक्योर कॉपी) एक सुरक्षित सुरंग पर फाइलों को ट्रांसफर करने के लिए लिनक्स डी वास्तव है। अपने मामले में आप पुनरावर्ती स्विच का उपयोग करना चाहते हैं, जैसे:

scp -r /home/a/ user@remote.host.com:/home/b/

5
sftp और scp वास्तव में अलग-अलग प्रोटोकॉल हैं, दोनों ssh पर आधारित हैं।
16

1
हां, यदि सर्वर केवल sftp प्रोटोकॉल की अनुमति देता है, तो यह उत्तर काम नहीं करता है।
рüффп

4

प्रयोग करके देखें

put -r /home/a/ /home/b/

अधिक जानकारी के लिए देखें: यह


1
-rस्विच के बाद से समर्थित है OpenSSH 5.4 केवल।
मार्टिन प्रिक्रील

ध्यान दें कि -rस्विच क्लाइंट साइड (केवल sftpकमांड का हिस्सा ) है। तो सर्वर (यहां: प्राप्त करना) पक्ष को ओपनएसएसएच 5.4 की आवश्यकता नहीं है, केवल क्लाइंट को इसका समर्थन करने की आवश्यकता है। और: यह स्वीकृत उत्तर होना चाहिए , क्योंकि (संभवत: असमर्थित) rsyncटैग किए गए प्रश्न के उत्तर के रूप sftpमें थोड़ा भ्रमित है।
टीनो

0

दरअसल, put -r को काम करना चाहिए। लेकिन आपके दूरस्थ होस्ट पर डेस्टिनेशन फोल्डर मौजूद होना चाहिए:

sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder
 Couldn't canonicalize: No such file or directory
 ....
sftp> mkdir sourcefolder
sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder/sourcefolder
 Entering sourcefolder/
 sourcefolder/file1
 sourcefolder/file2

क्या आपने संदर्भ और प्रमाण जोड़ा है जो आप राज्य करते हैं और पुष्टि करते हैं कि यह उत्तर पहले से ही पोस्ट पर मौजूदा उत्तरों में से एक में उत्तर नहीं दिया गया है। " आपको टिप्पणी करने के लिए 50 प्रतिष्ठा की आवश्यकता क्यों है" पढ़ें, ताकि आप समझ सकें कि आप टिप्पणी कैसे शुरू कर सकते हैं।
पिंप जूस आईटी

-1

मेरे मामले rsyncमें संभव नहीं था इसलिए मैंने इसका इस्तेमाल किया:

mput -rp /home/a/ /home/b/

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