सवाल सीपी के साथ फाइल कॉपी करते समय स्थानांतरण प्रगति और गति कैसे दिखाएं?


अन्यथा, क्या कोई वैकल्पिक कमांड लाइन उपयोगिता है जो इसे प्राप्त कर सकती है?


274
2017-12-14 04:48


मूल




जवाब:


जबकि cp इस कार्यक्षमता को नहीं मिला है, आप इसका उपयोग कर सकते हैं pv यह करने के लिए:

pv my_big_file > backup/my_big_file

नोट: यह विधि फ़ाइल की अनुमतियों और स्वामित्व को खो देगी। इस तरह की प्रतिलिपि बनाई गई फ़ाइलों में वही अनुमतियां होंगी जैसे कि आप उन्हें स्वयं बनाएंगे और आपसे संबंधित होंगे।

इस उदाहरण में, pv मूल रूप से फ़ाइल को stdout * पर आउटपुट करता है, जिसे आप फ़ाइल का उपयोग करके रीडायरेक्ट करते हैं > ऑपरेटर। साथ ही, जब आप ऐसा करते हैं तो यह टर्मिनल पर प्रगति के बारे में जानकारी प्रिंट करता है।

यह है जो ऐसा लग रहा है:

stefano@ubuntu:~/Data$ pv my_big_file > backup/my_big_file
 138MB 0:00:01 [73.3MB/s] [=================================>] 100% 

आपको इसकी आवश्यकता हो सकती है पीवी स्थापित करें (वैकल्पिक रूप से, टाइप करें sudo apt-get install pv) आपके सिस्टम पर।


*: तकनीकी बिट

यूनिक्स जैसी प्रणाली में डेटा की तीन महत्वपूर्ण धाराएं हैं: stdout (मानक आउटपुट), stderr (मानक त्रुटि) और stdin (मानक इनपुट)। बोलने के लिए हर कार्यक्रम में तीनों होते हैं। > पुनर्निर्देशन ऑपरेटर प्रोग्राम आउटपुट को एक फ़ाइल में रीडायरेक्ट करता है। तर्क के बिना, जैसा कि आप ऊपर देखते हैं, > एक प्रोग्राम को पुनर्निर्देशित करता है मानक उत्पादन एक फाइल के लिए। cp मूल रूप से कुछ भी प्रशंसक नहीं करता है

cat source > destination

(कहा पे cat बस एक फाइल पढ़ता है और इसे stdout पर प्रिंट करता है)। pv बिल्ली की तरह ही है, लेकिन अगर आप कहीं और आउटपुट स्ट्रीम को रीडायरेक्ट करते हैं, तो यह प्रगति की जानकारी को इसके बजाय stdout पर प्रिंट करेगा।

पर एक नज़र डालें man pv इसके बारे में और जानने के लिए।


एक और विकल्प, के रूप में alt textएक प्रकार का गुबरैला में सुझाव देता है यह जवाब, इसके बजाय rsync का उपयोग करना है:

$ rsync -ah --progress source-file destination-file
sending incremental file list
source-file
        621.22M  57%  283.86MB/s    0:00:01

यह प्रगति दिखाते समय फ़ाइलों की अनुमति / स्वामित्व को संरक्षित रखेगा।


204
2017-12-14 05:17



यह महत्वपूर्ण हो सकता है या नहीं हो सकता है (स्थिति के आधार पर), लेकिन pv अनुमतियों को उसी तरह संभाल नहीं करता है cp करता है ... (एक त्वरित परीक्षण के आधार पर मैंने कोशिश की: pv निष्पादित बिट की प्रतिलिपि नहीं बनाई .. rsync किया। - Peter.O
IMO: alias cp="rsync -avz" सीपी पुराना है। - Marco Ceppi♦
यदि आप मेरे जैसे हैं, और भूल जाओ pv, आप में snooping जा सकते हैं /proc/PID of cp/fd तथा /proc/PID of cp/fdinfo प्रगति का पता लगाने के लिए। (यह आपके लिए तेज गति से है।) मैं इस तकनीक का उपयोग देखने के लिए करता हूं updatedb। - Thanatos
हाँ, -z शायद नेटवर्क प्रतियों के लिए ही इस्तेमाल किया जाना चाहिए; एक स्थानीय प्रतिलिपि के लिए डेटा को संपीड़ित और डिकंप्रेस करना शुद्ध ओवरहेड है। - Matthew Read
@Rodrigo rsync -avzP क्या आप उपयोग करना चाहते हैं। - Marco Ceppi♦


नहीं है देख यहाँ लेकिन क्यों। यद्यपि यह आपकी आवश्यकता से अधिक करता है, rsync के साथ एक है --progress पैरामीटर। - ए अनुमतियां रखेगा, आदि, और वह मानव पठनीय होगा।

rsync -ah --progress source destination

आउटपुट इस तरह कुछ दिखाई देगा:

Pictures/1.jpg
      2.13M 100%    2.28MB/s    0:00:00 (xfr#5898, to-chk=1/5905)
Pictures/2.jpg
      1.68M 100%    1.76MB/s    0:00:00 (xfr#5899, to-chk=0/5905)

130
2017-10-15 08:06



यह वर्तमान उबंटू (14.10) में बहुत अच्छा काम करता है। यह भी समर्थन करता है -rनिर्देशिकाओं की पुनरावृत्ति करने के लिए ध्वज। इसे सीपी के लिए प्रत्यक्ष प्रतिस्थापन के रूप में भी अलिया किया जा सकता है: alias cp="rsync -ah --progress" - rustyx
सिस्टम के साथ शामिल टूल का उपयोग करने में सक्षम होने के बोनस के साथ ओएस एक्स पर काम करता है। - Ivan X
यह बहुत अच्छा है, आउटपुट दिखता है filename MB-copied MB-speed time-remaining) - Rudolf Olah
मुझे इस विकल्प को पीवी से बेहतर पसंद है, विशेष रूप से क्योंकि rsync मानक इंस्टॉल का हिस्सा है - Joao Costa
@bartekbrak साझा करने के लिए धन्यवाद। मैं वर्तमान में मैकोज़ 10.12.x पर rsync 3.1.2 का होमब्री संस्करण चला रहा हूं और उपयोग कर रहा हूं --progress टर्मिनल में सभी आउटपुट डिस्प्ले को देखकर मेरा सिर स्पिन बनाता है। तो एओएल खोजशब्द खोज से यहां आने वाले लोग, rsync -ah --info=progress2 [source] [destination]  उत्पादन को थोड़ा और अधिक ️ तरीके IMHO में प्रस्तुत करता है। - Chris


अगर आप देखना चाहते हैं कि आपकी फाइलें सही तरीके से स्थानांतरित हो रही हैं तो आप इसका उपयोग कर सकते हैं gcp तथा gcp सीपी की तरह है लेकिन डिफ़ॉल्ट रूप से आपको एक प्रगति पट्टी देता है ताकि आप देख सकें कि कॉपी की जा रही क्या है। कार्यक्रम के रूप में विकी नोट्स, gcp जैसे कई उपयोगी विशेषताएं हैं

  • स्थानांतरण प्रगति संकेत
  • त्रुटि पर निरंतर प्रतिलिपि (अगली फ़ाइल पर जाएं)
  • प्रतिलिपि स्थिति लॉगिंग: जीसीपी अपने सभी कार्यों को लॉग करता है ताकि यह जानना संभव हो कि कौन सी फाइलों की सफलतापूर्वक प्रतिलिपि बनाई गई है
  • लक्षित फाइल सिस्टम सीमाओं को संभालने के लिए नाम मैंगलिंग (उदाहरण के लिए एफएटी पर असंगत वर्णों "*" या "?" का विलोपन)

हालांकि, जब भी उपकरण का उपयोग करते समय प्रगति बार 100% तक पहुंच गया है, तब तक आपको तब तक इंतजार करना होगा जब तक कि आपका टर्मिनल प्रॉम्प्ट आपके मीडिया को सुरक्षित रूप से हटाने से पहले फिर से दिखाई न दे ताकि आप यह सुनिश्चित कर सकें कि स्थानांतरण प्रक्रिया सफलतापूर्वक समाप्त हो गई है।

gcp फ़ाइलों की प्रतिलिपि बनाने के लिए प्रयोग किया जाता है और इसमें विकल्प हैं --preserve ताकि विभिन्न विशेषताओं और अनुमतियों को संरक्षित किया जा सके और --recursiveताकि पूरी निर्देशिका की प्रतिलिपि बनाई जा सके। अपने विकल्पों पर अधिक जानकारी दर्ज करके पाया जा सकता है man gcp या जाकर जाकर उबंटू ऑनलाइन हस्तक्षेप। एक ट्यूटोरियल भी उपलब्ध है इस क्षेत्र पर

इंस्टॉल करें gcp के साथ भंडार से

sudo apt-get install gcp

(ध्यान दें: उबंटू 12.10 में नया ऑटोमाउंट पॉइंट है, उदाहरण के लिए, /media/user/usbdisk)

आप प्रवेश करके एक फ़ाइल को अपने मीडिया में कॉपी कर सकते हैं

gcp /home/mike/file.mp4 /media/usb

और एक फ़ोल्डर को अपने मीडिया में कॉपी करें

gcp -rv ~/Podcasts /media/Mik2

नमूना आउटपुट से gcp प्रगति पट्टी के साथ:

gcp ~/Videos_incIplayer/mars.flv /media/Mik2
Copying 168.57 MiB 100% |########################################################|   7.98 M/s Time: 00:00:22

आप निश्चित रूप से अपनी डिस्क पर प्रतिलिपि बनाने के लिए कई फाइलें या फ़ोल्डर्स निर्दिष्ट कर सकते हैं, और इसमें कई अन्य विकल्प शामिल हैं man gcp


84
2017-10-15 11:09



एसएसएच पर इसके साथ त्रुटि मिली dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11 - msa7
यदि आपके पास मशीन पर X11 डिस्प्ले खुला है तो आप बस सेट कर सकते हैं export DISPLAY=:0.0 जीसीपी शुरू करने से पहले। यदि मशीन हेडलेस है तो आपको वर्चुअल फ्रेमबफर या कुछ में xsession शुरू करना होगा, उस बिंदु पर आपको शायद किसी अन्य प्रोग्राम की तलाश करनी चाहिए - user292067
gcp बहुत सभ्य है लेकिन डीबीयूएस / एक्स आवश्यकता विषम है। एसएसएच अग्रेषण का उपयोग करके मैंने इसे एसएसएच पर संभाला: ssh -X user@host और उसने मुझे इसे चलाने की अनुमति दी। - Oli♦


मुझे इस सटीक उद्देश्य के लिए curl का उपयोग करने से बाहर निकलना है। मैन पेज "FILE" प्रोटोकॉल को समर्थित के रूप में सूचीबद्ध करता है, इसलिए इसे किसी URL में किसी भी अन्य प्रोटोकॉल की तरह उपयोग करें:

curl -o destination FILE://source

गति, प्रगति, समय शेष, और अधिक - सभी एक परिचित प्रारूप में।


54
2018-02-02 09:00



यह विशेष रूप से उन वातावरणों में बहुत अच्छा है जहां आपको नए टूल इंस्टॉल करने से प्रतिबंधित किया गया है और जहां rsync अनुपलब्ध है।
शानदार, यह एक ज्ञात हैक होना चाहिए! - ionreflex
अच्छा उत्तर! चतुर! - 9301293
यह संभवतः है एक ही कमी जैसा pv, कि यह अनुमतियों को सहेज नहीं पाएगा। - Ploni


हालांकि यह कई फाइलों की प्रतिलिपि करते समय गति प्रदर्शित नहीं करता है, जबकि -v विकल्प cp आदेश आपको प्रगति जानकारी प्रदान करेगा। जैसे

cp -rv old-directory new-directory

22
2017-12-14 17:17



प्रगति की जानकारी? यह सिर्फ verbose आउटपुट है। प्रगति जानकारी प्रदान करने के लिए आपको कम से कम अब कितनी फाइलें, या यहां तक ​​कि कौन सी फाइलों की प्रतिलिपि बनाने की आवश्यकता है, इसकी आवश्यकता होगी। - Julian F. Weinert


कर्नेल अधिकांश डेटा जैसे गति, और अक्सर प्रतिशत भी जानता है। आधुनिक कर्नल इसे अपने / proc फाइल सिस्टम के माध्यम से उजागर करते हैं।

से दिखाया गया https://github.com/jnweiger/showspeed उस जानकारी का उपयोग करता है। यह पहले से चल रहे कार्यक्रमों से जुड़ा हो सकता है और इस तरह के आवधिक अपडेट दे सकता है:

$ dd if=bigfile of=/tmp/otherbigfile &
$ showspeed dd
dd looks like a process name. pid=4417 matches av0=dd.
p/4417/fd/0r /home/jw/bigfile 113MB/s (12%, 2.3GB)  9m:35
p/4417/fd/1w /tmp/otherbigfile 182MB/s (2.6GB)
p/4417/fd/0r /home/jw/bigfile 285MB/s (15%, 3.0GB)  8m:08
p/4417/fd/0r /home/jw/bigfile 115MB/s (16%, 3.2GB)  8m:01
p/4417/fd/0r /home/jw/bigfile 107MB/s (17%, 3.4GB)  7m:39
p/4417/fd/1w /tmp/otherbigfile 104MB/s (3.5GB)
p/4417/fd/0r /home/jw/bigfile 139MB/s (19%, 3.7GB)  7m:37
p/4417/fd/0r /home/jw/bigfile 116MB/s (20%, 3.9GB)  7m:18
p/4417/fd/1w /tmp/otherbigfile  67MB/s (4.0GB)
p/4417/fd/1w /tmp/otherbigfile 100MB/s (4.1GB)
...

19
2018-02-25 14:34



अच्छा है। यद्यपि यह प्रतिशत कैसे काम करता है? मुझे लगता है कि फाइल केवल पढ़ने के मामले में ही खुला है? और शायद बिखरी हुई पहुंच के मामले में यह काम नहीं करेगा। - j_kubik
इस मामले में आप चलाने के लिए एक और टर्मिनल का उपयोग भी कर सकते हैं pkill -USR1 dd बनाना dd अपनी स्थिति दिखाएं, दूसरा विकल्प होगा watch -n 1 pkill -USR1 dd इसे समय-समय पर अपनी प्रगति दिखाने के लिए (हर सेकेंड)। - Yaron
सही। कई उपकरणों को समय के साथ आंकड़ों की रिपोर्ट करने के लिए एक अंतर्निहित तरीका मिला है। डीडी कोई अपवाद नहीं है। आधुनिक कार्यान्वयन में स्थिति = प्रोजेस विकल्प होता है। शोस्पेड क्लासिक यूनिक्स शैली "एक उद्देश्य के लिए एक उपकरण" समाधान है - बस पीवी की तरह। लेकिन इसमें अलग-अलग उपयोगक हैं: भूत के माध्यम से फाइल को पंप करने वाले कपों के बारे में सोचें या आप चल रहे सीपी या टैर के लिए ईटीए जानना चाहते हैं। यह कुछ घंटों के बाद पहले से ही 95% हो सकता है और संभवतः आप पुन: प्रारंभ नहीं करना चाहते हैं कि केवल पीवी जोड़ने के लिए ... बिखरी हुई पहुंच अच्छी तरह से काम नहीं करेगी। Showspeed केवल नमूने पदों की तलाश है। - Jürgen Weigert


जबकि pv स्थानीय से निपट सकते हैं cp कार्य, का उपयोग कर dd साथ में pv स्थानीय दोनों से निपट सकते हैं (cp) और रिमोट (scp) कार्य।

dd if=path/to/source.mkv | pv | dd of=path/to/dest.mkv

कृपया सुनिश्चित करें path/to/dest.mkv द्वारा निकलता है touch path/to/dest.mkv

यह प्रगति दिखा सकता है, लेकिन यदि आप प्रतिशत की जानकारी चाहते हैं,

dd if=path/to/source.mkv | pv -s 100M | dd of=path/to/dest.mkv

बदलने के 100M अपनी स्रोत फ़ाइल के वास्तविक आकार के साथ ऊपर।

यहां रिमोट पार्ट आता है

जबकि scp उपयोग कर, वर्तमान प्रगति को शायद ही दिखा सकते हैं dd साथ में pv केक का एक टुकड़ा है।

ssh onemach@myotherhost dd if=path/to/source.mkv | pv -s 100M | dd of=path/to/dest.mkv

11
2018-01-05 08:08



नई dd है status=progress: askubuntu.com/a/824895/52975 - Ciro Santilli 新疆改造中心 六四事件 法轮功


सीवी नामक एक नया टूल है जो किसी रनिंग कमांड से संबंधित किसी भी वर्णनकर्ता को ढूंढ सकता है और प्रगति और गति दिखा सकता है: https://github.com/Xfennec/cv

cv -w

सभी चल रहे सीपी, एमवी आदि संचालन के आंकड़े आउटपुट करता है


10
2017-07-13 11:33



watch cv -q भी neater है - nwgat
यह केवल एक व्यक्तिगत फाइलों के लिए प्रगति दिखाता है, यह महसूस करता है कि ए cp निर्देशिका को दोबारा कॉपी कर रहा है या नहीं। - Flimm
युद्ध का नाम बदलकर बदल दिया गया। महान उपकरण! - sebastian


एक उपकरण कहा जाता है progress उन रिपॉजिटरीज़ में जो विभिन्न विभिन्न आदेशों की जांच करने में सक्षम हैं और उनके लिए प्रगति जानकारी प्रदर्शित करते हैं।

कमांड का उपयोग कर इसे स्थापित करें

sudo apt-get install progress

इस उपकरण का उपयोग इस तरह किया जा सकता है:

cp bigfile newfile & progress -mp $!

आउटपुट:

[11471] cp /media/Backup/Downloads/FILENAME.file 
        29.9% (24.2 MiB / 16 MiB)

10
2017-09-26 22:35