2011-01-18 8 views
5

मेरे पास वर्तमान में निम्न बैश स्क्रिप्ट है:बैश स्क्रिप्ट के माध्यम से फ़ाइलों का एक समूह scp: एक बेहतर तरीका होना चाहिए

for a in `seq 16 75`; 
do scp [email protected]:/mnt/device/folder/numbered_file$a.txt ./; 
done; 

जबकि यह काम करता है, यह बहुत धीमा है। प्रत्येक फ़ाइल, सेवर के अनुरोध के बारे में 4-7 सेकंड लेता है, फिर फ़ाइल भेजना एक और 3 या तो सेकंड लेता है।

क्या ऐसा करने का कोई तरीका है जिसमें सर्वर को भेजा गया केवल 1 आदेश शामिल है (मेरे वीपीएन प्रत्येक व्यक्तिगत कमांड को प्राप्त करने के समय को कम करने के लिए)? आम तौर पर, मैं scp [email protected]:/mnt/device/folder/numbered_file* की तरह कुछ करता हूं लेकिन फ़ोल्डर में कई हजार फाइलें हैं जिन्हें मैं कॉपी नहीं करना चाहता हूं। मुझे केवल उन कुछ ही प्राप्त करने की आवश्यकता है (अनुक्रम द्वारा परिभाषित)।

+0

भविष्य के संदर्भ के लिए, आप बाहरी 'seq' उपयोगिता को कॉल करने के बजाय' कथन 'वाक्य में उस ब्रेस वाक्यविन्यास का उपयोग कर सकते हैं: '{16..17}' के लिए। आप यह भी कर सकते हैं: 'के लिए ((ए = 16; एक <= 75; ए ++)) '। आदेश के भीतर ब्रेस रेंज सहित, इस मामले में करने के लिए सही बात है। –

उत्तर

4

बैश में:

scp [email protected]:/mnt/device/folder/numbered_file{16..75}.txt ./ 
+0

+1 हाँ, मुझे पता था कि एक आसान तरीका होना चाहिए था। धन्यवाद। –

2

बैश के साथ इस काम करता है?

scp [email protected]:/mnt/device/folder/numbered_file{16..75}.txt ./ 
+0

+1 हाँ, मुझे पता था कि एक आसान तरीका होना चाहिए था। धन्यवाद। –

3

rsync चाल करना चाहिए: http://www.manpagez.com/man/1/rsync/

आप मानकों के साथ एक सा बेला के लिए है, लेकिन सही किया, यह शायद ssh से अधिक फ़ाइलों को स्थानांतरित करने का सबसे तेजी से रास्ता नहीं है।

संबंधित मुद्दे