मुझे sftp में पूरी निर्देशिका कैसे मिल सकती है?


189

मैं केवल sftp का उपयोग करना सीख रहा हूं, और मैं दूरस्थ कंप्यूटर से अपने स्थानीय कंप्यूटर पर निर्देशिका की प्रतिलिपि बनाना चाहता हूं। अगर मैं कोशिश करूँ

get [directory]

यह मुझे यह त्रुटि देता है:

Cannot download non-regular file: /home/mpirocch/Documents

get -R काम भी नहीं करता है।


2
5.4 में RecSSive पुट / गेट ओपनएसएसएच में जोड़ा गया था, जो 2010 में जारी किया गया था। आप अपने सर्वर को अपग्रेड करने पर विचार कर सकते हैं क्योंकि इसमें बहुत सारे बग फिक्स और बेहतर सुरक्षा विशेषताएं शामिल हैं।
लेसे मेजेस्टे सेप

जवाबों:


265

-r(पुनरावर्ती) ध्वज का उपयोग करें :

get -r *

16
जवाब देने के लिए धन्यवाद जो वास्तव में सवाल का जवाब देता है।
जॉनीफ्लेश

30
मुझे देता है:get: Invalid flag -r
ghbarratt

2
यह मुझे अमान्य ध्वज भी देता है। मुझे यकीन नहीं है कि यह सभी प्रणालियों पर समर्थित है।
बेन

@Ben: जब मैंने 2009 में यह सवाल पूछा -rथा , तो ध्वज मौजूद नहीं था। क्या आपका सिस्टम अप टू डेट है?
मत्ती

15
@silvinci सभी मौजूदा सिस्टम नहीं। CentOS 6.4 openssh-ग्राहकों-5.3p1-84.1.el6.x86_64 साथ अवैध विकल्प
CrackerJack9

52

उपयोग:

scp -r mpirocch@my-server:/home/mpirocch/Documents Documents

3
यह काम करता है, लेकिन यह एसएफटीपी से ऐसा करने में सक्षम होना अच्छा होगा (इसलिए मैं इसे कॉपी करने से पहले देख सकता हूं कि मैं क्या कॉपी करता हूं)। क्या यह संभव है?
मैथ्यू

@ मैथ्यू: मुझे ऐसा नहीं लगता। मैं कुछ समय से अपने आप से यही सवाल पूछ रहा हूं और फिलहाल जो सबसे अच्छा जवाब है वह है scp -r। या आप फ़ाइलफ़िला की तरह एक उन्नत SFTP ग्राहक का उपयोग कर सकते हैं।
क्रिस्टियन सियुपिटु 23

1
scp -r symlinks को फॉलो करेगा ...
jsleuth

5
कुछ सिस्टम अनुमति दे सकते हैं sftp, लेकिन scpपहुंच नहीं ।
तूरियन

40

उपयोग करें lftp:

lftp sftp://user@host

फिर, Lftp के भीतर, cdउस निर्देशिका में जिसे आप कॉपी करना चाहते हैं, और mirrorइस तरह से चयनित निर्देशिका को पुन: डाउनलोड करने के लिए कमांड का उपयोग करें:

mirror

यह आदेश विकल्प और तर्क स्वीकार करता है:

दर्पण [ विकल्प ] [ स्रोत [ लक्ष्य ]]

उदाहरण के लिए, -R(या --reverse) विकल्प के कारण स्थानीय निर्देशिका ट्री को दूरस्थ निर्देशिका में अपलोड किया जाएगा:

mirror -R

प्रोजेक्ट की साइट पर या अन्य आदेशों और विकल्पों के लिए Debian.org परlftp(1) मैन पेज देखें ।


4
+1 lftp जादू और आनंद के एक छोटे बंडल की तरह है!
WCWedin

16

अच्छी तरह से इस छोटे गाइड की मदद करनी चाहिए, lftp के साथ स्थानीय फ़ोल्डर में एक दूरस्थ सर्वर को मिरर करें

lftp sftp://user:password@server.org:22 -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'

  • sftp:// = SFTP प्रोटोकॉल का उपयोग करता है
  • mirror = दर्पण मोड
  • verbose = डाउनलोड की जा रही फाइलों को दिखाता है
  • use-pget-n = सेगमेंट की संख्या, बड़ी फ़ाइलों को गति देने के लिए वास्तव में उपयोगी है
  • parallel = एक ही समय में गुणक फ़ाइलों को डाउनलोड करता है

तुम बाहर समानांतर स्विच में फ़ाइलों को डाउनलोड करना चाहते हैं use-pget-n=8के साथ--parallel=8

उम्मीद है कि यह किसी को एक दूरस्थ फ़ोल्डर को एक स्थानीय फ़ोल्डर को दर्पण करने की आवश्यकता है


धन्यवाद, यह मेरे लिए काम किया, अन्य विधियों के असफल होने के बाद (विशेष रूप से sftp पर "-r" विकल्प)। पासवर्ड में डॉलर के पात्रों के कारण मेरे मामले में कमान के पहले भाग को उद्धृत करने की आवश्यकता थीlftp 'sftp://user:pa$$word@server.org:22' -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'
जेसन

15

अगर आप कुछ बेहतर पा सकते हैं तो सीधे sftp प्रोग्राम का उपयोग न करें। लिनक्स के लिए, कई फ़ाइल प्रबंधक (कम से कम Nautilus और Dolphin, GNOME और KDE वाले) मूल रूप से sftp का समर्थन करते हैं, और हमेशा sshfs होते हैं। विंडोज़ के लिए, वहाँ WinSCP है, और शायद अन्य । इन सभी का उद्देश्य यह है कि आप sftp पर फ़ाइलों को एक्सेस करने दें, जैसे कि वे एक नियमित फाइलमाइट पर हैं, इसलिए आपको यह ध्यान रखने की आवश्यकता नहीं है कि आप उन्हें sftp पर एक्सेस कर रहे हैं।


वाह, nautilus SFTP के साथ बहुत अच्छा काम करता है। मैंने नौटिलस में एक बुकमार्क जोड़ा, और अब यह सब हास्यास्पद है। धन्यवाद!
मैथ्यू

मेरे पास Nautilus SFTP के साथ प्रदर्शन का मुद्दा है। हाँ, यह वास्तव में सुविधाजनक है लेकिन मैं Nautilus के माध्यम से 1 Gbit / s नेटवर्क को संतृप्त करने में सक्षम नहीं था, जबकि सादे sftp/sshकमांड लाइन इंटरफ़ेस के साथ मैं (cca 100 MB / s फ़ाइल स्थानांतरण) था। तो यह मुद्दा था GNU / Linux टकसाल पर Nautilus।
स्टैम्स्टर

13

mgetइसके बजाय प्रयास करें get

यदि आप उस निर्देशिका के अंदर हैं जिसे आप कॉपी करना चाहते हैं, तो स्पष्टीकरण: काम mget करेगा ; यदि आप ऐसा कुछ करते हैं:

sftp> cd dir_to_get
sftp> mget *

यह उस निर्देशिका में सभी फाइलें प्राप्त करेगा। हालांकि, यह किसी भी उपनिर्देशिका की सामग्री को पुन: प्राप्त नहीं करेगा ।


1
mget मेरे लिए मिलने से बेहतर कोई काम नहीं करता है।
मैथ्यू

1
इसके साथ गैर-नियमित फ़ाइल डाउनलोड नहीं की जा सकती
Dchris

1
यह मेरे लिए एक ऐसी प्रणाली पर काम करता है जहाँ 'get -r' काम नहीं करता।
त्चोचके

10
get -r [directory]

हो जाता है [directory]और इसके तहत सब कुछ, जहां rपुनरावर्ती के लिए खड़ा है। मुझे यह सिर्फ टाइपिंग helpसे मिला sftp


1
IMO इस सवाल का सबसे अच्छा जवाब है। :)
रामनरनर २४'१३ को १ner

3
यह 29 नवंबर '10 (लगभग डेढ़ साल पहले) से एक उत्तर का एक डुप्लिकेट है ।
क्रिस्टियन सियुपिटु

5

जैसा कि cp:

scp -rp user@host:/path/to/dir dir

ऊपर मूल फ़ाइलों और उपनिर्देशिकाओं के समय और मोड को संरक्षित करेगा। यह बैकअप की पुनर्प्राप्ति के लिए विशेष रूप से उपयोगी है।


यह मूल रूप से 29 नवंबर '10 (लगभग दो साल पहले) से एक उत्तर का एक डुप्लिकेट है ।
क्रिस्टियन सियुपिटु

0

मेरे पास दूरस्थ सर्वर में जावा डिस्ट फ़ोल्डर है, जहां मेरे पास निम्नलिखित पेड़ हैं:

- dist
--- Audio.jar
--- README
--- lib
----- lib.jar

लक्ष्य है: मैं SFTP का उपयोग करना चाहता हूं? और उन्हें / tmp / <> में डालें

चरण 1. sftp रिमोट्यूसर @ आईपी

चरण 2. सीडी / var / tmp

चरण 2. lmkdir / tmp / dist; lmkdir / tmp / dist / lib

चरण 3. एलसीडी / टीएमपी / डिस्ट

स्टेप 4. mget *

चरण 5. एलसीडी / tmp / dist / lib

चरण 6. एमजीटी *

चरण 7. अंत में मेरा लक्ष्य है

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