Rsync चलाते समय मैं एक प्रगति बार कैसे देख सकता हूँ?


31

मैं Ubuntu 12.04 को रेपो के रूप में उपयोग कर रहा हूं और rsyncकमांड लाइन से उपयोग करते समय एक प्रगति बार देखना चाहूंगा । मैंने इस लेख में सुझाए गए विकल्प की कोशिश की ( -P), लेकिन मैं ग्रोसिंक का उपयोग नहीं करने के लिए एक प्रगति बार देखना पसंद करता हूं। मैं rsync -P source destवर्तमान में उपयोग कर रहा हूं ।


क्या आपने इसे पढ़ा है? stackoverflow.com/questions/238073/…
AB

मैं तेजी से प्रतिक्रिया की सराहना करता हूं। मैं इस पर शोध करने के लिए उत्सुक हूं।
जोसेफ स्मिथ

यह एक अच्छी शुरुआत थी लेकिन मुझे यह जानना जरूरी है कि प्रगति बार को कैसे अपडेट किया जाए क्योंकि rsync काम कर रहा है। एक दोस्त ने कहा कि मुझे सर्वर के आकार को लागू करने और पाइप के साथ एक वॉच कमांड लागू करने की आवश्यकता है।
जोसेफ स्मिथ

एक उत्तर है :)
AB

जवाबों:


7

इस बारे में कैसा है?

rsync_param="-av"
rsync "$rsync_param" a/ b |\
     pv -lep -s $(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)
  • $rsync_param

    मापदंडों के दोहरे इनपुट से बचा जाता है

  • $(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)

    पूरा करने के लिए चरणों की संख्या निर्धारित करता है।

  • a/ b

    1. a/ स्रोत है
    2. b लक्ष्य है

1
@JosephSmith क्या आप मेरे जवाब से संतुष्ट थे? फिर मुझे एक वर (∧) दें। अगर मैं आपकी समस्या को हल कर सकता हूं, तो अच्छा होगा यदि आप मेरे उत्तर (problem) को चिह्नित करेंगे। ;)
एबी

मैंने कुछ दिन पहले एक बड़ी मुस्कान के साथ इसे स्वीकार किया। मैंने अभी संयुक्त राष्ट्र का चयन किया और इसे फिर से स्वीकार कर लिया। मुझे नहीं लगता कि मैं वोट कर सकता हूं क्योंकि मेरे पास पर्याप्त क्रेडिट नहीं है। सहायता btw के लिए धन्यवाद।
जोसेफ स्मिथ

कोई भी विचार क्यों मुझे कोई त्रुटि मिली, कोई फ़ाइल या निर्देशिका नहीं मिली? मेरे द्वारा चलाया जाने वाला कमांड है: root @ cto: / repo / ubuntu # rsync "$ rsync_param" -a --prune-blank-dirs --exclude "* .iso" संग्रह .ubuntu -ubuntu/indices/ / repo /। ubuntu / सूचकांक | pv -lep -s $ (rsync "$ rsync_param" n संग्रह.ubuntu.com/indices/ / repo / ubuntu / indices | awk 'NF' | wc -l)
जोसेफ स्मिथ

1
"$rsync_param"nबल्कि अजीब है; उद्धरण का मतलब है कि यह केवल बिना रिक्त स्थान वाले विकल्पों पर काम कर सकता है, और nअंत तक संलग्न करने का मतलब है कि यह केवल छोटे विकल्पों के साथ काम कर सकता है। बहुत स्पष्ट और आसान है $rsync_param -n, जो के प्रारूप पर भरोसा किए बिना ड्राई-रन निर्दिष्ट करता है rsync_param, और इसे उद्धृत न करके, लंबे विकल्पों को भी शामिल किया जा सकता है
इज़काता

पहली बार काम किया है, सिवाय इसके कि यह ट्रांसफर दर प्रदर्शित नहीं करता है
Ciasto piekarz

36

rsync में एक --infoविकल्प है जिसका उपयोग न केवल वर्तमान प्रगति को आउटपुट करने के लिए किया जा सकता है, बल्कि अंतरण दर और बीता समय:

--info=FLAGS            fine-grained informational verbosity

-Pमैन पेज में विकल्प के तहत इसका उपयोग कैसे करना है इसकी व्याख्या :

-P     The -P option is equivalent to --partial --progress.  Its purpose is to
       make it much easier to specify these two options for a long transfer that
       may be interrupted.

       There is also a --info=progress2 option that outputs statistics based on
       the whole transfer, rather than individual files.  Use this flag
       without  out‐putting  a  filename  (e.g. avoid -v or specify --info=name0)
       if you want to see how the transfer is doing without scrolling the screen 
       with  a  lot  of names.   (You  don’t  need  to specify the --progress
       option in order to use --info=progress2.)

तो निम्नलिखित है:

rsync -r --info=progress2 --info=name0 "$src" "$dst"

निम्नलिखित आउटपुट में परिणाम और लगातार अद्यतन किया जाता है:

18,757,542,664 100%   65.70MB/s    0:04:32 (xfr#1389, to-chk=0/1510)

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


16

आप मापदंडों --progressऔर उपयोग कर सकते हैं --stats

rsync -avzh --progress --stats root@server:/path/to/file output_name

root@server's password: 
receiving incremental file list
file
         98.19M  54%    8.99MB/s    0:00:08

2
यह मेरे लिए macOS पर काम किया।
आम

2

यह अंत में काम किया:

rsync "$rsync_param" -a --prune-empty-dirs --exclude "*.iso" rsync://archive.ubuntu.com/ubuntu/indices/ /repo/ubuntu/indices | pv -lep -s $(rsync "$rsync_param"n rsync://archive.ubuntu.com/indices/ /repo/ubuntu/indices | awk 'NF' | wc -l)

1

यदि आपका संस्करण विकल्प को rsyncस्वीकार नहीं करता --info=progress2है, तो आप उपयोग कर सकते हैं tqdm:

स्थापित करने के लिए:

pip install tqdm

काम में लाना:

$ rsync -av / source / dest | tqdm --unit_scale | wc -l
10.0Mit [00:02, 3.58Mit / s]

0

हाँ, जो जॉन ने कहा : --info=progress2विकल्प का उपयोग करें । लेकिन, अगर rsync का मेरा संस्करण बहुत पुराना है और इस विकल्प का समर्थन नहीं करता है तो मैं क्या करूं? उत्तर: उन्नयन rsync!

यहां बताया गया है कि rsyncउबुंटू पर स्रोत से कैसे बनाया जाए

(उबंटू 16.04 पर परीक्षण किया गया)

  1. Rsync का नवीनतम संस्करण डाउनलोड करें : https://download.samba.org/pub/rsync/src/ । Ex: "rsync-3.1.3.tar.gz"। यह सही बनाता है यह सुनिश्चित करने के लिए सभी पर कोई रिक्त स्थान के साथ एक निर्देशिका में सहेजें।
  2. अपने फ़ोल्डर एक्सप्लोरर में, इसे राइट-क्लिक करें और "एक्स्ट्रेक्ट हियर" पर जाएं।
  3. निकाले गए फ़ोल्डर को दर्ज करें (उदा: "rsync-3.1.3")
  4. अपने फ़ोल्डर प्रबंधक में स्क्रीन पर राइट-क्लिक करें और "टर्मिनल में खोलें" पर जाएं। वैकल्पिक रूप से, कमांड लाइन पर मैन्युअल रूप से 4 के माध्यम से चरण 2 करें। अंततः आपको स्रोत कोड cdवाले इस निकाले गए निर्देशिका में एड होना चाहिए rsync
  5. के वर्तमान संस्करण की जाँच करें rsync। इस पर ध्यान दें ताकि आप बाद में देख सकें कि यह वास्तव में अपडेट हो गया है।

    rsync --version
    
  6. आवश्यक उपकरण स्थापित करें:

    sudo apt update
    sudo apt install yodl
    
  7. बिल्ड:

    ./configure
    make
    sudo make install
    
  8. सुनिश्चित करें कि इसे अपडेट किया गया था:

    rsync --version
    

    नमूना उत्पादन:

    $ rsync --version
    rsync  version 3.1.3  protocol version 31
    Copyright (C) 1996-2018 by Andrew Tridgell, Wayne Davison, and others.
    Web site: http://rsync.samba.org/
    Capabilities:
        64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
        socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
        append, no ACLs, xattrs, iconv, symtimes, prealloc
    
    rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
    are welcome to redistribute it under certain conditions.  See the GNU
    General Public Licence for details.
    
  9. "प्रगति 2" के लिए मैन पेज खोजें। अब आपके पास --info=progress2विकल्प का उपयोग होगा :

    man rsync
    

    ... फिर /कुंजी दबाएं और टाइप करें progress2; इसके लिए खोज करने के लिए Enter दबाएं; प्रेस n'n'ext मैच जब तक आप प्रवेश आप देख रहे हैं खोजने के लिए:

    एक --info=progress2विकल्प भी है जो व्यक्तिगत फ़ाइलों के बजाय पूरे हस्तांतरण के आधार पर आंकड़ों को आउटपुट करता है। फ़ाइल नाम आउटपुट के बिना इस ध्वज का उपयोग करें (उदाहरण से बचें -vया निर्दिष्ट करें --info=name0) यदि आप यह देखना चाहते हैं कि स्क्रीन को बहुत सारे नामों के साथ स्क्रॉल किए बिना हस्तांतरण कैसे हो रहा है। ( --progressउपयोग करने के लिए आपको विकल्प निर्दिष्ट करने की आवश्यकता नहीं है --info=progress2।)

यह भी देखें: गेब्रियल स्टेपल्स द्वारा "rsync का उपयोग कैसे करें": https://superuser.com/questions/1271882/convert-ntfs-partition-to-ext4-how-to-copy-the-data/1464264#1464264

आंशिक संदर्भ:

  1. http://www.beginninglinux.com/home/backup/compile-rsync-from-source-on-ubuntu
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.