Tramp / Dired scp बाहरी का उपयोग करने के बजाय ssh पर इनलाइन फ़ाइलों को स्थानांतरित करता है


12

मैं दूरस्थ फ़ाइलों तक पहुँचने के लिए ssh के माध्यम से tramp का उपयोग कर रहा हूँ। पाठ फ़ाइलों के लिए, यह वास्तव में अच्छी तरह से काम कर रहा है, लेकिन जब भी मैं अपने स्थानीय मशीन में बड़ी दूरस्थ फ़ाइलों को कॉपी करना चाहता हूं, तो ट्रम्प अपनी धीमी इनलाइन विधि (फ़ाइल को जीज़िप के साथ एन्कोडिंग) का उपयोग करता है। उदाहरण के लिए एक बाहरी विधि का उपयोग करने की तुलना में यह बहुत धीमा है। बड़ी फ़ाइलों को स्थानांतरित करते समय मैं emacs को scp का उपयोग कैसे करूँ?

प्रासंगिक जानकारी:

  • मैं दूरस्थ मशीन का उपयोग करने के लिए एक ~ / .ssh / config फ़ाइल का उपयोग करता हूं। उस मशीन के लिए उपनाम निम्नलिखित में hehi09 है। पहुंच पासवर्ड-कम है

  • स्थानांतरित करते समय संदेश बफ़र में संदेश :

    Copying /ssh:hehi09:/home/christian/big_file.dat to /home/christian/big_file.dat'...
    Tramp: Inserting `/ssh:hehi09:/home/christian/big_file.dat'...
    Tramp: Encoding remote file `/ssh:hehi09:/home/christian/big_file.dat' with `(gzip <%s | base64)'...
    
  • के मान:

    • ट्रैंप-कॉपी-आकार-सीमा का मान 10240 है (परीक्षण फ़ाइल आकार से बहुत छोटा)

    • tramp-default-method का मान "scp" है

  • $ scp hehi09:/home/christian/big_file.dat ~/ कमांड लाइन से अपेक्षित के रूप में काम करता है और emacs में स्थानांतरण की तुलना में बहुत तेज है

किसी भी विचार क्यों emacs बड़े फ़ाइलों की प्रतिलिपि बनाने के लिए scp का उपयोग नहीं कर रहा है? कोई भी मदद बहुत ही सराहनीय होगी!

जवाबों:


17

जब आप कह रहे हैं "मैं ssh के माध्यम से tramp का उपयोग कर रहा हूं" मुझे लगता है कि आप एक फ़ाइल खोलते हैं जैसे /ssh:host:/path/to/file। यह हमेशा ssh विधि का उपयोग करना चाहिए। यदि आप scp विधि का उपयोग करना चाहते हैं, तो आप उपयोग करेंगे /scp:host:/path/to/file। यह छोटी फ़ाइलों के लिए स्वचालित रूप से ssh, और बड़ी फ़ाइलों के लिए scp का उपयोग करता है। यदि आप तयशुदा तरीके पर भरोसा करते हैं tramp-default-method, तो आप छोटे का उपयोग कर सकते हैं /host:/path/to/file


यह अच्छा होगा कि यह फ़ाइलों की नकल करते समय हमेशा ssh और scp दोनों का उपयोग करे, चाहे / ssh या / scp की परवाह किए बिना .. या कम से कम कुछ चेतावनी संदेश देता है जब / ssh के साथ बड़े बायनेरिज़ की प्रतिलिपि बनाता है। आपके उत्तर को देखने से पहले, मुझे लगा कि एमाक्स ट्रम्प के माध्यम से बड़ी फ़ाइलों की प्रतिलिपि बनाने के लिए तैयार नहीं है। (चूँकि मैंने केवल / ssh का उपयोग किया है)
xwl

2
उस स्थिति में, scpअपनी डिफ़ॉल्ट विधि बनाएं । फिर भी, Tramp के माध्यम से छोटी फ़ाइलों की प्रतिलिपि बनाता है ssh, और बड़ी फ़ाइलों के माध्यम से scp। आप के माध्यम से सीमा को अनुकूलित कर सकते हैं tramp-copy-size-limit
माइकल एल्बिनस

5
26 Emacs के रूप में, दूरस्थ फ़ाइल नामों में अब एक विधि अनिवार्य है। तुम हमेशा कहना होगा /scp:host:/path/to/fileया /ssh:host:/path/to/file
माइकल एल्बिनस

0

क्योंकि आपको इसे ~/.emacsफाइल में सेट करना है । इसके बावजूद, Emacs एक टेक्स्ट एडिटर है, एसएफटीपी या एफ़टीपी क्लाइंट नहीं है, यह इस base64एन्कोडिंग का उपयोग करता है जबकि sshविधि में यह फ़ाइल स्थानांतरण के लिए बहुत धीमा हो जाता है।


क्षमा करें, लेकिन यह गलत है। जैसा कि स्वीकृत उत्तर कहता है कि आप डिफ़ॉल्ट चयन पर भरोसा कर सकते हैं या हर कनेक्शन के लिए एक स्पष्ट निर्णय ले सकते हैं। यदि आप उपयोग करते हैं sshतो आप सही हैं कि एक base64रूपांतरण हो रहा है जो लार्गिश फ़ाइलों के लिए धीमा है। हालाँकि, यदि आप उपयोग scpकरते हैं तो ऐसा नहीं है। Emacs उन कमांड्स को निष्पादित करने में अच्छी तरह से सक्षम है जो "टेक्स्ट" के साथ व्यवहार नहीं करते हैं। अंत में, इसे Emacs उपयोगकर्ताओं को मत तोड़िए कि उनका पसंदीदा OS एक टेक्स्ट एडिटर है;)
क्रिस

पहले से ही इसे सेट अप scpऔर base64रूपांतरण के साथ रखा गया था। अगर यह नहीं होता है तो यह सराहनीय होगा, एक बार यह एसएफटीपी कनेक्शन के लिए मुख्य आवेदन होगा। यद्यपि इसका उपयोग मुख्य पाठ संपादक और फ़ाइल प्रबंधक के रूप में किया जाता है।
रोनाल्ड 71

आप सही कह रहे हैं, किसी भी तरह से इसे scpविधि के माध्यम से , base64रूपांतरण के बिना , इसे तेजी से मोड़ने में कामयाब रहे ।
रोनाल्ड 71

यह अजीब है। एन्कोडिंग का scpउपयोग न करने के लिए मुझे किसी विशेष सेटिंग की आवश्यकता नहीं थी base64। क्या आप जल्दी से साझा कर सकते हैं कि आपके मामले में भविष्य में किसी को भी छोड़ने की क्या समस्या थी?
क्रिस

पहले से ही ऐसा करने में कामयाब रहे, @ क्रिस। मुख्य समस्या यह थी कि TRAMP diredकनेक्शन के माध्यम से खुला था ssh, फिर scpकमांड चला रहा था, जो base64रूपांतरण को बाधित करता था । जब दोनों TRAMP diredकनेक्शन चलाते हैं और scpविधि के साथ दोनों ही कमांड को कॉपी करते हैं , तो यह base64रूपांतरण की उपेक्षा करता है और तेजी से करता है।
रोनाल्ड 71
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.