अपने स्थानीय डिस्क पर लिखने के लिए टार का उपयोग करने के बजाय, आप ssh का उपयोग करके नेटवर्क पर दूरस्थ सर्वर पर सीधे लिख सकते हैं।
server1$ tar -zc ./path | ssh server2 "cat > ~/file.tar.gz"
कोई भी स्ट्रिंग जो आपके "ssh" कमांड का अनुसरण करती है, उसे इंटरेक्टिव लॉगऑन के बजाय रिमोट सर्वर पर चलाया जाएगा। आप SSH के माध्यम से उन दूरदराज के कमांड से इनपुट / आउटपुट को पाइप कर सकते हैं जैसे कि वे स्थानीय थे। उद्धरणों में कमांड डालने से किसी भी भ्रम से बचा जाता है, खासकर जब पुनर्निर्देशन का उपयोग किया जाता है।
या, आप दूसरे सर्वर पर सीधे टार फाइल निकाल सकते हैं:
server1$ tar -zc ./path | ssh server2 "tar -zx -C /destination"
शायद ही कभी इस्तेमाल किया -C
विकल्प पर ध्यान दें । इसका अर्थ है "कुछ भी करने से पहले इस निर्देशिका में परिवर्तन।"
या, शायद आप गंतव्य सर्वर से "पुल" करना चाहते हैं:
server2$ tar -zx -C /destination < <(ssh server2 "tar -zc -C /srcdir ./path")
ध्यान दें कि <(cmd)
निर्माण नया है और पुराने सिस्टम पर काम नहीं करता है। यह एक प्रोग्राम चलाता है और आउटपुट को एक पाइप पर भेजता है, और उस पाइप को कमांड में स्थानापन्न करता है जैसे कि वह एक फाइल थी।
मैं आसानी से इस प्रकार के रूप में ऊपर लिखा हो सकता है:
server2$ tar -zx -C /destination -f <(ssh server2 "tar -zc -C /srcdir ./path")
या निम्नानुसार है:
server2$ ssh server2 "tar -zc -C /srcdir ./path" | tar -zx -C /destination
या, आप अपने आप को कुछ दुख से बचा सकते हैं और बस rsync का उपयोग करें:
server1$ rsync -az ./path server2:/destination/
अंत में, याद रखें कि स्थानांतरण से पहले डेटा को संपीड़ित करने से आपकी बैंडविड्थ कम हो जाएगी, लेकिन बहुत तेज़ कनेक्शन पर, यह वास्तव में ऑपरेशन को अधिक समय ले सकता है । यदि: यह इसलिए है क्योंकि आपके कंप्यूटर काफी तेजी से ऊपर रखने के लिए संपीड़ित करने के लिए सक्षम नहीं हो सकता है संपीड़ित 100 एमबी लेता है लंबे समय तक की तुलना में यह करने के लिए ले जाएगा भेज 100 एमबी, तो यह तेज है यह असम्पीडित भेजने के लिए।
वैकल्पिक रूप से, आप अपने आप को gzip करने के लिए पाइपिंग पर विचार कर सकते हैं (बजाय -z विकल्प का उपयोग करके) ताकि आप एक संपीड़न स्तर निर्दिष्ट कर सकें। यह मेरा अनुभव है कि कंप्रेसिबल डेटा के साथ फास्ट नेटवर्क कनेक्शन पर, स्तर 2 या 3 पर गज़िप का उपयोग करना (डिफ़ॉल्ट 6 है) ज्यादातर मामलों में सबसे अच्छा समग्र थ्रूपुट देता है। इस तरह:
server1$ tar -c ./path | gzip -2 | ssh server2 "cat > ~/file.tar.gz"