सवाल Rsync में कुल प्रगति दिखा रहा है: क्या यह संभव है?


मैंने पहले से ही इस विकल्प की खोज की है, लेकिन इसमें केवल समाधान शामिल हैं कस्टम पैचिंग। तथ्य यह है कि यह --help में नहीं दिखाया गया है और कोई और जानकारी नहीं मिल सकती है शायद यह इंगित करती है कि उत्तर 'नहीं' है, लेकिन मैं यह पुष्टि करना चाहता हूं।

क्या यह दिखाना संभव है कुल फ़ाइल स्थानांतरण प्रगति rsync के साथ?


195
2018-01-05 15:26


मूल


चूंकि rsync 3.1.0 अब मूलभूत फ़ाइल स्थानांतरण प्रगति शामिल है। उत्तर देखो serverfault.com/a/441724/107793 ब्योरा हेतु। - Florian Feldhaus
कृपया स्वीकृत उत्तर बदलें। @ डेविड का जवाब पूरी तरह बेकार है। - Navin


जवाब:


दानकीम सही है। कुल प्रगति सूचक जोड़ने के लिए कोई छोटा रास्ता नहीं है।

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

दूसरे शब्दों में, गणना करने का सबसे आसान तरीका यह है कि वास्तव में ऐसा करने के लिए कितना काम करना है।


33
2018-01-06 04:10



आप अभी भी एक साधारण संकेतक (डेटा स्थानांतरित + डेटा छोड़ दिया गया) / (स्रोत में कुल डेटा), या (# फ़ाइलों को स्थानांतरित या छोड़ा गया) / (स्रोत में # फाइलें) हो सकता है। यह विशेष रूप से सटीक नहीं होने वाला है, लेकिन यह एक विचार देगा। जब आप दिन के अंत में एक बड़ा स्थानांतरण कर रहे हों, तो अच्छा लगा, और आप सोच रहे हैं कि कंप्यूटर का इंतजार करना और कंप्यूटर बंद करना है, या इसे रात के लिए चलाने दें ... - naught101
मुझे विश्वास नहीं है कि निष्कर्ष सही है। मुझे लगता है कि @ naught101 सवाल के लिए अधिक उचित है, और मुझे लगता है कि इसका उपयोग करने पर एक जवाब की भविष्यवाणी नहीं है --size-onlyया जैसा कि आगे गलत है। - Evan Carroll
उस वक्त जब मैंने उत्तर लिखा, तो यह सटीक था - rsync में कुल प्रगति संकेतक के लिए कोई तंत्र नहीं था। और हाँ, आप अपना खुद का लिख ​​सकते हैं, लेकिन बहुत कम लोग करेंगे। - David Mackintosh
नवागंतुकों के लिए टिप्पणी: अब यह संभव है: serverfault.com/a/441724/422003 - imposeren


Rsync में ऐसा करने का अब आधिकारिक तरीका है (संस्करण 3.1.0 प्रोटोकॉल संस्करण 31, उबंटू ट्रस्टी 14.04 के साथ परीक्षण किया गया)।

#> ./rsync -a --info=progress2 /usr .
    305,002,533  80%   65.69MB/s    0:00:01  xfr#1653, ir-chk=1593/3594)

मैंने अपने साथ कोशिश की /usr फ़ोल्डर क्योंकि मैं पूरी फाइल सिस्टम को ट्रांसफर करने के लिए यह सुविधा चाहता था, और /usr एक अच्छा प्रतिनिधि नमूना प्रतीत होता था।

--info=progress2 एक अच्छा समग्र प्रतिशत देता है, भले ही यह केवल आंशिक मूल्य हो। वास्तव में, मेरा /usr फ़ोल्डर 6 गीगा से अधिक है:

#> du -sh /usr
6,6G    /usr/

तथा rsync इसे स्कैन करने में काफी समय लगा। तो लगभग हर बार जब मैंने देखा प्रतिशत लगभग 9 0% पूरा हो गया था, लेकिन फिर भी यह देखने में सांत्वना है कि कुछ कॉपी किया जा रहा है :)

संदर्भ:


312
2017-10-24 11:13



ध्यान दें कि यह 3.1.0 में उतरा है। यह भी ध्यान रखना महत्वपूर्ण है कि समय परिप्रेक्ष्य में यह आवश्यक नहीं है। यह अनिवार्य रूप से डेटा की मात्रा दिखा रहा है जिसे दूरस्थ अंत में मौजूद होने के लिए सत्यापित किया गया है। और दर वह दर है जिस पर डेटा रिमोट एंड पर सही होने के लिए सीखा जा रहा है (चाहे वह पहले से ही हो या नया डेटा स्थानांतरित हो और इसे सही बनाया गया हो)। तो हालांकि बहुत उपयोगी है आपको चेतावनी को समझने की जरूरत है। - Kevin Cox
होमब्री के साथ ओएसएक्स पर इसका इस्तेमाल करने के लिए, "ब्रू टैप होमब्रू / डुप्सेस; ब्रू इंस्टॉल rsync" - Matt Carrier
उस पर ध्यान देने योग्य मूल्य --info=progress2 के साथ काम नहीं करता है -v - sanmai
जोड़ें --no-i-r साथ ही स्विच करें rsync नकल से पहले स्कैन नहीं करता है लेकिन कॉपी करने से पहले पूरी तरह से जानता है और जानता है + दिखाता है कि कितना काम बाकी है। - Alex
ध्यान दें कि आप इसका उपयोग कर सकते हैं --human-readable (या -h) एमबी / जीबी में कुल आकार देखने के लिए .. प्रगति पर। - Nux


आप 'पीवी' के साथ कर सकते हैं (apt-get install pv डेबियन और उबंटू के साथ)। मैं स्थानांतरित फ़ाइलों की संख्या की निगरानी करने की अनुशंसा करता हूं, क्योंकि स्थानांतरित डेटा की मात्रा फाइलों के आकार से संबंधित नहीं है बल्कि स्रोत और गंतव्य के बीच डेल्टा पर है। और फाइलों की गिनती एक बड़ी डेल्टा के लिए एक ही प्रगति की गणना करेगी और दूसरा डेल्टा वाला होगा। जिसका मतलब है कि किसी भी मामले में ईटीए अनुमान दूर हो सकता है। आकार-आधारित ईटीए केवल तभी काम करता है जब आपका गंतव्य खाली हो, इस मामले में डेल्टा == स्रोत का आकार।

सामान्य विचार आरएसआईएनसी से प्रति फ़ाइल 'स्थानांतरित' प्रति पंक्ति को निकालना है, और उन पंक्तियों को 'पीवी' के साथ गिनना है:

rsync -ai / स्रोत रिमोट: / dest | पीवी -ल्स [फाइलों की संख्या]> / dev / null

मैं पूरे फाइल सिस्टम (कई कारणों से) बैकअप लेता हूं, इस मामले में आप बहुत सस्ता उपयोग कर सकते हैं df फ़ाइलों की संख्या प्राप्त करने के लिए (बजाय du या find rsync के बाद एक और बार आपके स्रोत पदानुक्रम को पार करेगा)। -X विकल्प यह सुनिश्चित करने के लिए प्रतीत होता है कि rsync एक ही स्रोत फाइल सिस्टम पर रहता है (और अन्य आंतरिक माउंट का पालन नहीं करता है):

rsync -aix / स्रोत रिमोट: / dest | पीवी -les $ (डीएफ -आई / स्रोत | perl -ane 'प्रिंट $ एफ [2] अगर $ एफ [5] = ~ एम: ^ /:')> / dev / null

यदि आप फ़ाइलों को सामान्य रूप से / स्रोत में गिनना चाहते हैं, तो उपयोग करें find /source|wc -l (फिर से चेतावनी: I / O पर धीमा और भारी हो सकता है)।


42
2018-06-10 10:22



जैसा कि zerodeuz निर्दिष्ट है, केवल "df" का उपयोग करें जब आप पूरे विभाजन को rsyncing कर रहे हैं, जैसा कि df -i /source सभी विभाजन से इनोड्स (फाइलें) की संख्या प्राप्त होती है जिसमें / स्रोत रहता है। अन्यथा उपयोग करें निर्देशिका के अंदर फ़ाइलों को गिनने के लिए 'ढूंढें' "$ ()" अभिव्यक्ति के अंदर। - lepe
एक विकल्प du या find - मान लीजिए कि आप अपूर्ण प्रति को खत्म कर रहे हैं या हटाए गए अपडेट के साथ इन-प्लेस अपडेट कर रहे हैं - इसका उपयोग करना है rsync -ai --dry-run एक ही फ़ाइल सूची प्राप्त करने के लिए मुख्य रन पास हो जाएगा pv - Izkata


लंबे स्थानान्तरण के लिए, मैं दौड़ने से खुश हूं du -s दोनों तरफ। यहाँ तक की watch -n1 du -s, अगर मैं वास्तव में चिंतित महसूस करता हूँ।

watch एक आदेश निष्पादित करता है (du -s यहां) समय-समय पर (यहां हर 1 सेकंड) और आउटपुट पूर्णस्क्रीन दिखाता है।


28
2018-01-05 16:30



के उदाहरण के लिए धन्यवाद watch आदेश! - Cam
// , चतुर! Linfo.org के मुताबिक: "डु (यानी, डिस्क उपयोग) कमांड निर्देशिका की पेड़ों के आकार की रिपोर्ट करता है जिसमें उनकी सभी सामग्री और व्यक्तिगत फाइलों के आकार शामिल हैं। इससे स्पेस होग्स, यानी निर्देशिकाओं और फ़ाइलों को ट्रैक करने के लिए यह उपयोगी हो जाता है। जो हार्ड डिस्क ड्राइव (एचडीडी) या अन्य स्टोरेज मीडिया पर बड़ी या अत्यधिक मात्रा में स्थान का उपभोग करता है। " - Nathan Basanese
मुझे नहीं पता कि आप किस तरह के लंबे स्थानान्तरण करते हैं, जहां डु व्यवहार्य है। डु नरक के रूप में धीमा है जब परिणाम टीबी और एम फाइलों में होगा। - Nobody
मेरे "लंबे स्थानान्तरण" के लिए एक डु ऑपरेशन को पूरा होने में लगभग एक घंटे लगते हैं, जिसके दौरान rsync बहुत धीमी गति से चल रहा है, क्योंकि वे डिस्क तक पहुंच से लड़ रहे हैं। - Abhi Beckert


साथ में --info = progress2 आप भी कर सकते हैं वृद्धिशील रिकर्सन अक्षम करें। यह शुरुआत में पूरी फ़ाइल सूची का निर्माण करेगा और इस प्रकार आपको समग्र प्रगति का एक बेहतर विचार देगा (कम से कम फाइलों की संख्या में, मुझे नहीं लगता कि यह फ़ाइल आकार स्कैन करता है)। एक व्यापार बंद है। यह अधिक स्मृति-महंगा है, और वास्तविक हस्तांतरण की शुरुआत में देरी करता है। शायद धीमी-लिंक कनेक्शन में सबसे अच्छा उपयोग किया जाता है, और निश्चित रूप से फाइलों के गैजिलियन के लिए बहुत अच्छा नहीं है।

निम्नलिखित के लिए आरएसआईएनसी मैन पेज से निम्नलिखित है -आर - श्रमिक

वृद्धिशील रिकर्सन का उपयोग कर अक्षम किया जा सकता है --no-इंक पुनरावर्ती विकल्प या इसके छोटे --no-ए-आर उर्फ।

(स्रोत: http://rsync.samba.org/ftp/rsync/rsync.html )

साथ ही, यदि आप --delete- इससे पहले कि यह शुरुआत में पूर्ण-पुनरावर्तन को मजबूर करेगा, जिसे अनाथ फ़ाइलों को हटाने के लिए आवश्यक है (फ़ाइलों को जो कि नियत में मौजूद है, लेकिन स्रोत में नहीं)।


20
2017-10-16 19:56



इसके लिए धन्यवाद, अन्य उत्तरों का परिणाम% आयु है जो ऊपर और नीचे रहता रहता है! - artfulrobot


असल में नहीं। आप केवल प्रगति ध्वज के साथ प्रगति प्रति-फ़ाइल दिखा सकते हैं, लेकिन यह इसके बारे में है।

मुझे लगता है कि आप इसके चारों ओर एक रैपर लिख सकते हैं या किसी भी पैच का उपयोग कर सकते हैं जिसे आप पहले से ही पा सकते हैं लेकिन आपको खुद से पूछना चाहिए कि क्या यह वास्तव में इसके लायक है, क्या आपको वास्तव में rsync के लिए कुल प्रगति की आवश्यकता है?


11
2018-01-05 15:50



यहां एक रैपर स्क्रिप्ट है जो एक अच्छी प्रगति पट्टी के रूप में कुल प्रगति और फ़ाइल प्रगति दिखाती है: gist.github.com/JohannesBuchner/4d61eb5a42aeaad6ce90 - j13r
आप रास्ता बदल सकते हैं --progress काम का उपयोग करें --info=progress2, यह आपको वैश्विक प्रगति दिखाएगा। उपयोगी होने के लिए आपको वृद्धिशील रिकर्सिव एल्गोरिदम को अक्षम करने की आवश्यकता होगी, इसलिए --info=progress2 --no-inc-recursive - mat
@ j13r आप इस गिस्ट को भी उत्तर के रूप में साझा कर सकते हैं! इसका शानदार विकल्प! - skywinder


मैंने यह भी खोजा कि कैसे rsync के साथ कुल प्रगति को दिखाया जाए और मुझे इस पोस्ट से उपयोगी उत्तरदाता मिला है: https://stackoverflow.com/questions/7157973/monitoring-rsync-progress

मूल रूप से, आप इसका उपयोग कर सकते हैं --info = progress2 rsync के dev संस्करण में 3.1.0। यहाँ क्या है दस्तावेज़ कहा है:

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


7
2017-07-04 14:30



--info=name0 सोना है - ipatch


मैंने ज़ीरोडेक्स से जवाब का उपयोग किया और अपनी छोटी बैश लिपि लिखी:

#!/bin/bash

RSYNC="ionice -c3 rsync"
# don't use --progress
RSYNC_ARGS="-vrltD --delete --stats --human-readable"
SOURCES="/dir1 /dir2 /file3"
TARGET="storage::storage"

echo "Executing dry-run to see how many files must be transferred..."
TODO=$(${RSYNC} --dry-run ${RSYNC_ARGS} ${SOURCES} ${TARGET}|grep "^Number of files transferred"|awk '{print $5}')

${RSYNC} ${RSYNC_ARGS} ${SOURCES} ${TARGET} | pv -l -e -p -s "$TODO"

7
2018-02-07 23:44