क्या मैं "cp" के साथ कॉपी करते समय टर्मिनल एक प्रगति बार दिखाऊंगा?


33

क्या cp का उपयोग करके टर्मिनल में फ़ाइलों की प्रतिलिपि बनाते समय एक प्रगति बार प्रदर्शित करना संभव है?


2
... आप rsyncइसके बजाय का उपयोग करने पर भी विचार कर सकते हैं ।
असमस

क्या किसी तीसरे पक्ष के उपकरण स्थापित किए बिना समग्र प्रगति पट्टी के साथ ऐसा करने का कोई तरीका है? शायद एक स्क्रिप्ट या कुछ और?
rrallvv

जवाबों:


49

आप इसके बजाय rsync का उपयोग कर सकते हैं।

rsync --progress /copy/from /copy/to

1
स्पीडवाइज़, जो तेज, rsync या cp है?
daviesgeek

यदि कॉपी की जा रही सभी फाइलें गंतव्य में मौजूद नहीं हैं, तो मुझे नहीं लगता कि कोई ध्यान देने योग्य अंतर होगा। यदि कुछ फ़ाइलें गंतव्य में मौजूद हैं, तो यह अलग-अलग होगी क्योंकि rsync कुछ जाँच करता है। Rsync आमतौर पर (लेकिन हमेशा नहीं) उस मामले में तेज़ होगा।
बहमट

2
का उपयोग करना rsync -P /copy/from /copy/toसमतुल्य है rsync --partial --progress /copy/from /copy/toजो कॉपी प्रगति को प्रदर्शित करेगा, साथ ही यदि यह डिस्कनेक्ट हो जाता है तो स्थानांतरण फिर से शुरू करें।
gh0st

और बस cp की तरह, इसे फ्लैगशिप्स -rको स्किप न करने के लिए फ्लैग की जरूरत है
अलेक्जेंडर - मोनिक

21

के दौरान cp, CtrlTवर्तमान प्रतिशत (macOS पर कम से कम) प्रदर्शित करता है


वह तो कमाल है!
felix021

1
कारण यह काम करता है क्योंकि है Ctrl-tभेजता है SIGINFOएक ही तरीका है कि में संकेत Ctrl-cभेजता SIGINTसंकेत है। kill -INFOयदि आप चाबियों को दबाए नहीं रखना चाहते हैं तो आप प्रश्न में प्रक्रिया को बार-बार करने के लिए एक अन्य शेल में लूप का उपयोग कर सकते हैं । क्योंकि यह एक संकेत है, यह अन्य उपयोगिताओं के साथ भी काम करता है, जैसे ddCtrl-tऔर SIGINFOबीएसडी से विरासत में मिले हैं।
HTNW

1

यदि आप cp का उपयोग करके बड़ी फ़ाइलों या निर्देशिकाओं की प्रतिलिपि बना रहे हैं, तो आप 'एक्टिविटी मॉनिटर' खोल सकते हैं, 'डिस्क' टैब पर जाएँ और प्रक्रिया 'cp' देखें। यहां आप अंतिम बूट के बाद कितने बाइट लिखे गए हैं, इस पर नजर रख सकते हैं, जिससे आपको प्रगति का अंदाजा हो सकता है। (OS X 10.10)।

उम्मीद है की वो मदद करदे!


0
#!/bin/sh
   strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
      | awk '{
        count += $NF
            if (count % 10 == 0) {
               percent = count / total_size * 100
               printf "%3d%% [", percent
               for (i=0;i<=percent;i++)
                  printf "="
               printf ">"
               for (i=percent;i<100;i++)
                  printf " "
               printf "]\r"
            }
         }
         END { print "" }' total_size=$(stat -c '%s' "${1}") count=0

यह सही नहीं है, लेकिन यह काम करता है ... कि एक निर्देशिका पथ में छोड़ दें और इसे कुछ समान नाम दें ..


रुको ... मैं कैसे चल सकता है ???
daviesgeek

2
मुझे याद नहीं है कि क्या ओएस एक्स के पास straceयह जवाब लिखे जाने के समय (जुलाई 2011) था, लेकिन यह निश्चित रूप से आज नहीं है।
टिम रुडिक

किसी भी विचार कैसे macOS पर इसे चलाने के लिए?
rrallvv 14
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.