আরএসইএনসি-তে মোট অগ্রগতি দেখাচ্ছে: এটা কি সম্ভব?


229

আমি ইতিমধ্যে এই বিকল্পটির জন্য অনুসন্ধান করেছি, তবে কেবলমাত্র সমাধান খুঁজে পেয়েছি যা কাস্টম প্যাচিংয়ের সাথে জড়িত । এটি --help এ দেখায় না এবং আরও কোনও তথ্য খুঁজে পাওয়া যায় নি বলে সম্ভবত উত্তরগুলি 'না' বলে ইঙ্গিত দেয়, তবে আমি এটি নিশ্চিত হওয়া দেখতে চাই।

আরএসসিএনসি দিয়ে মোট ফাইল স্থানান্তর অগ্রগতি দেখানো সম্ভব ?


22
আরএসসিএনসি ৩.১.০ থেকে এখন একটি বেসিক মোট ফাইল স্থানান্তর অগ্রগতি অন্তর্ভুক্ত রয়েছে। বিস্তারিত জানার জন্য উত্তর সার্ভারফল্ট /a/441724/107793 দেখুন ।
ফ্লোরিয়ান ফিল্ডহাউস

14
গৃহীত উত্তর পরিবর্তন করুন। @ ডেভিডের উত্তর সম্পূর্ণ অকেজো।
নবীন

উত্তর:


36

ডানাকিম সঠিক। মোট অগ্রগতি সূচক যুক্ত করার জন্য কোনও তুচ্ছ উপায় নেই।

এর কারণ হ'ল যখন আরএসসিএনসি সিঙ্ক করার জন্য ফাইলগুলির তালিকা দেখায় তখন কোন ফাইলগুলি পরিবর্তন করতে হবে তা সময়ের আগেই তা জানে না। আপনি যদি ব-দ্বীপ স্থানান্তর করছেন, তখন ডেল্টাগুলি যে কাজটি করা দরকার তার একটি সম্পূর্ণ চিত্র দেওয়ার জন্য তাদের আগে সময় গণনা করতে হবে।

অন্য কথায়, সেখানে কত কাজ করতে হবে তা গণনার সবচেয়ে সহজ উপায়টি আসলে এটি করা।


42
আপনার কাছে এখনও একটি সাধারণ সূচক থাকতে পারে (যেমন ডেটা স্থানান্তরিত + ডেটা স্কিপড) / (উত্সের মোট ডেটা), বা (# ফাইল স্থানান্তরিত বা এড়িয়ে যাওয়া) / (উত্সে # ফাইল)। এটি বিশেষভাবে সঠিক হতে যাচ্ছে না, তবে এটি একটি ধারণা দেবে। দিনের শেষে যখন আপনি বড় ট্রান্সফার করছেন, তখন আপনার পক্ষে ভাল এবং আপনি ভাবছেন যে প্রায় অপেক্ষা করে কম্পিউটারটি বন্ধ করে দেওয়া উচিত, বা রাত্রে চালানো উচিত ...
নট 101

3
আমি বিশ্বাস করি না যে উপসংহারটি সঠিক। আমি মনে করি @ নট 101 প্রশ্নের তুলনায় আরও ন্যায্য, এবং আমার মনে হয় এটি ব্যবহার না --size-onlyকরার মতো উত্তরটির পূর্বাভাস দেওয়া আরও ভুল।
ইভান ক্যারল

2
আমি যখন উত্তরটি লিখেছিলাম তখন এটি সঠিক ছিল - মোটামুটি অগ্রগতি সূচকটির জন্য আরএসআইএনসি-র কোনও ব্যবস্থা ছিল না। এবং হ্যাঁ, আপনি নিজের লিখতে পারতেন, তবে খুব কম লোকই লিখতেন।
ডেভিড ম্যাকিনটোস

6
নতুনদের জন্য মন্তব্য: এটি এখন সম্ভব: সার্ভারসফল্ট
17৪১24২৪

দুটি পাস ব্যবহার করে, প্রথমে "--ড্রাই-রান" (মোট প্রত্যাশিত ফাইল গণনা) এবং দ্বিতীয়টি কোনও ফাইলের লগ ইন করা বিস্তারিত আউটপুট সহ (এবং গণনা লাইনগুলি সম্পূর্ণ করা হয় বা 'পিভি' তে পাইপ ব্যবহার করে) সহজেই সমাপ্তির অনুমানের অনুমতি দেয় allows ডাউনসাইড দুটি বড় নেস্টেড ডিরেক্টরি স্ক্যান করছে। প্রয়োজনের উপর নির্ভর করে, যেমন নিরাপদ গ্রাহকের ডেটা মাইগ্রেশন নিশ্চিত করা, এটি গ্রহণযোগ্য হতে পারে।
Ives

377

আরএসইএনসি-তে এটি করার একটি আনুষ্ঠানিক উপায় রয়েছে (সংস্করণ 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এটি সমস্ত স্ক্যান করতে অনেক সময় নিয়েছে। সুতরাং প্রায় সমস্ত সময় আমি যে শতাংশ দেখেছি প্রায় 90% সম্পন্ন হয়েছিল, তবে তবুও এটি কিছুটা অনুলিপি করে দেখে আরাম হচ্ছে যে :)

তথ্যসূত্র:


19
নোট করুন যে এটি ৩.১.০ এ পৌঁছেছে। এটি লক্ষ্য করাও গুরুত্বপূর্ণ যে এটি সময়ের দৃষ্টিকোণে অগত্যা সঠিক নয়। এটি মূলত দূরবর্তী প্রান্তে বিদ্যমান যে পরিমাণ ডেটা যাচাই করা হয়েছে তা প্রদর্শন করছে। এবং হার হ'ল যে হারে ডেটা রিমোট প্রান্তে সঠিক হতে শিখছে (তা সেভাবে আগে থেকেই ছিল বা নতুন ডেটা স্থানান্তরিত হয়েছিল এবং এটি সঠিক হয়েছে)। সুতরাং খুব দরকারী যদিও আপনাকে সতর্কতাগুলি বুঝতে হবে।
কেভিন কক্স

15
হোমব্রিউ দিয়ে ওএসএক্সে এটি ব্যবহার করতে, "ব্রিউ ট্যাপ হোমব্রিউ / ডুপস; ব্রিউ ইনস্টল আরএসসিএনসি"
ম্যাট ক্যারিয়ার

18
লক্ষণীয় যে --info=progress2এটির সাথে কাজ করে না-v
সানমাই

42
--no-i-rসুইচটি পাশাপাশি যুক্ত করুন , তাই rsyncঅনুলিপি করার পরে পুরোপুরি স্ক্যান করে না তবে অনুলিপি করার আগে এবং জানেন যে কত কাজ বাকি রয়েছে তা প্রদর্শন করে।
অ্যালেক্স

16
নোট করুন যে আপনি এমবি / জিবিতে মোট আকার দেখতে --human-readable(বা -h) ব্যবহার করতে পারেন .. অগ্রগতিতে।
Nux

45

আপনি 'পিভি' দিয়ে ( apt-get install pvডেবিয়ান এবং উবুন্টু সহ) করতে পারেন। আমি স্থানান্তরিত ফাইলগুলির সংখ্যা পর্যবেক্ষণ করার পরামর্শ দিই, যেহেতু স্থানান্তরিত ডেটার পরিমাণ ফাইলের আকারের সাথে নয় তবে উত্স এবং গন্তব্যের মধ্যে ব-দ্বীপে সংযুক্ত থাকে। এবং গণনা করা ফাইলগুলি একটি বড় ব-দ্বীপ এবং অন্য একটি ছোট ব-দ্বীপের সাথে একই প্রগতি গণনা করবে। যার অর্থ যে কোনও ক্ষেত্রে ইটিএ অনুমান খুব দূরে হতে পারে। আকার-ভিত্তিক ইটিএ কেবল তখনই কাজ করে যদি আপনার গন্তব্য খালি থাকে তবে এই ক্ষেত্রে ডেল্টা == উত্সের আকার।

সাধারণ ধারণাটি হ'ল আরএসইএনসি থেকে ফাইল 'ট্রান্সফার' করে প্রতি এক লাইন নির্গত করে এবং 'পিভি' দিয়ে সেই লাইনগুলি গণনা করে:

rsync -ai / উত্স দূরবর্তী: / গন্তব্য | পিভি -লেস [ফাইল সংখ্যা]> / দেব / নাল

আমি পুরো ফাইল সিস্টেমে ব্যাকআপ রাখি (বেশ কয়েকটি কারণে), এক্ষেত্রে dfআপনি ফাইলের সংখ্যা পেতে অনেক সস্তা ব্যবহার করতে পারেন (এর পরিবর্তে duবা findউইচ আপনার সিস্টেমে হায়ারার্কিকে আরএসআইএনসি করার পরে অন্য সময় অতিক্রম করবে)। -Yx বিকল্পটি একই উত্স ফাইল সিস্টেমে থাকা (এবং অন্যান্য অভ্যন্তরীণ মাউন্টগুলি অনুসরণ করে না) নিশ্চিত করে তোলে:

rsync -aix / উত্স দূরবর্তী: / গন্তব্য | পিভি-লেলেস $ (ডিএফ-আই / উত্স | পার্ল-জেন 'প্রিন্ট করুন $ এফ [2] যদি $ এফ [5] = ~ এম: ^ /:')> / দেব / নাল

আপনি যদি কোনও সাধারণ উপায়ে / উত্সে ফাইলগুলি গণনা করতে চান তবে ব্যবহার করুন find /source|wc -l(আবার সতর্কতা: I / O তে ধীর এবং ভারী হতে পারে)।


1
জেরোডুজ হিসাবে উল্লেখ করা হয়েছে, "ডিএফ" কেবল তখনই ব্যবহার করুন যখন আপনি সম্পূর্ণ পার্টিশনটি সংযুক্ত করছেন, যেহেতু / উত্সটিতে থাকা সমস্ত পার্টিশন থেকে ইনোড df -i /source(ফাইল) সংখ্যা পাবে। অন্যথায় "$ ()" এক্সপ্রেশন এর ভিতরে ডিরেক্টরিতে ফাইলগুলি গণনা করতে 'সন্ধান করুন' ব্যবহার করুন ।
লেপ

1
duবা এর বিকল্প হিসাবে find- আসুন আমরা বলি যে আপনি একটি অসম্পূর্ণ অনুলিপি শেষ করছেন বা মুছে ফেলা সহ একটি ইন-প্লেস আপডেট করছেন - rsync -ai --dry-runএকই ফাইলের তালিকাটি ব্যবহার করতে হবে মূল রানটি চলে যাবেpv
ইজকাটা

32

নিম্নলিখিতটি আরএসসিএন সংস্করণে 3.0.০.০ এবং তারপরে প্রযোজ্য। নীচে বর্ণিত বিকল্পগুলি ১ লা মার্চ, ২০০ on এ প্রকাশে প্রকাশিত হয়েছিল।

বরাবর --info = progress2 আপনার কাছে ব্যবহার করতে পারেন --no-Inc-রিকার্সিভ বিকল্প (বা তার খাটো --no-IR ক্রমবর্ধমান পুনরাবৃত্তির নিষ্ক্রিয় করতে ওরফে)।

এটি স্থানান্তর চলমান হিসাবে ধীরে ধীরে আরও বেশি ফাইল আবিষ্কার করার পরিবর্তে পুরো ফাইল তালিকা শুরুতে তৈরি করবে। যেহেতু এটি শুরু করার আগে সমস্ত ফাইলই জানবে, এটি সামগ্রিক অগ্রগতির আরও ভাল প্রতিবেদন দেবে। এটি ফাইলের সংখ্যার ক্ষেত্রে প্রযোজ্য - এটি ফাইলের আকারের উপর ভিত্তি করে কোনও অগ্রগতির প্রতিবেদন করে না।

এটি একটি বাণিজ্য বন্ধ জড়িত। সময়ের আগে পুরো ফাইল তালিকা তৈরি করা আরও মেমরির ব্যয়বহুল এবং এটি প্রকৃত স্থানান্তর শুরুতে উল্লেখযোগ্যভাবে বিলম্ব করতে পারে। আপনি যেমনটি আশা করবেন, সেখানে যত বেশি ফাইল থাকবে, তত বেশি বিলম্ব হবে এবং তত বেশি মেমরির প্রয়োজন হবে।

নিম্নলিখিতটি আরএসআইএনসি ম্যানুয়াল থেকে প্রাপ্ত (উত্স - http://rsync.samba.org/ftp/rsync/rsync.html ):

-r, --recursive

এটি rsync কে ডিরেক্টরিগুলি পুনরাবৃত্তভাবে অনুলিপি করতে বলে। এছাড়াও --dirs (-d) দেখুন। আরএসসিএনসি ৩.০.০ দিয়ে শুরু করে, পুনরাবৃত্তির ব্যবহৃত অ্যালগরিদম এখন একটি ইনক্রিমেন্টাল স্ক্যান যা আগের তুলনায় অনেক কম মেমরি ব্যবহার করে এবং প্রথম কয়েকটি ডিরেক্টরি স্ক্যান করার পরে স্থানান্তর শুরু করে। এই ইনক্রিমেন্টাল স্ক্যানটি কেবল আমাদের পুনরাবৃত্তির অ্যালগরিদমকে প্রভাবিত করে এবং পুনরাবৃত্তিযোগ্য স্থানান্তর পরিবর্তন করে না। এটি কেবল তখনই সম্ভব যখন স্থানান্তরটির উভয় প্রান্তই কমপক্ষে সংস্করণ 3.0.0 হয়।

কিছু বিকল্পের পূর্ণ ফাইল তালিকা জানতে rsync প্রয়োজন, সুতরাং এই বিকল্পগুলি বর্ধিত পুনরাবৃত্তি মোডটি অক্ষম করে। এর মধ্যে রয়েছে: --ডিলেট-আগে, --ডিলেট-পরে, --প্রিন-খালি-ডায়ারস এবং - ডিলে-আপডেট। এর কারণে, সংযোগের উভয় প্রান্তের কমপক্ষে 3.0.০.০ থাকা হলে ডিফল্ট মুছে ফেলা মোডটি এখন -ডিলেট-সময় হয় (উন্নত মোছার মোডটি অনুরোধ করার জন্য --del বা --ডিলেট-সময় ব্যবহার করুন) স্পষ্টভাবে)। - ডিলিট-দেরি বিকল্পটিও দেখুন --delet-after ব্যবহারের চেয়ে ভাল পছন্দ।

বর্ধমান পুনরাবৃত্তি --no-inc-recursive বিকল্প বা এর সংক্ষিপ্ত --no-ir উপকরণ ব্যবহার করে অক্ষম করা যেতে পারে ।

নির্দিষ্ট সংস্করণ পার্থক্যের জন্য https://rsync.samba.org দেখুন (নিচে স্ক্রোল করুন এবং রিলিজ নিউজ লিঙ্কগুলি দেখুন)।


3
এর জন্য ধন্যবাদ, অন্যান্য উত্তরগুলির ফলে একটি% বয়সের ফলস্বরূপ যা উপরে উঠে যায়!
আর্টফুলবোট

28

দীর্ঘ স্থানান্তরের জন্য, আমি du -sউভয় পক্ষের দৌড়ে খুশি । এমনকি watch -n1 du -s, যদি আমি সত্যিই উদ্বিগ্ন বোধ করি।

watchএকটি কমান্ড ( du -sএখানে) পর্যায়ক্রমে ( এখানে প্রতি 1 সেকেন্ডে) চালায় এবং আউটপুট পূর্ণস্ক্রিন দেখায়।


4
watchকমান্ডের উদাহরণের জন্য ধন্যবাদ !
ক্যাম

2
//, চালাক! Linfo.org এর মতে: "ডু (অর্থাত্, ডিস্ক ব্যবহার) কমান্ডটি ডিরেক্টরি গাছের মাপগুলি সমস্ত বিষয়বস্তু এবং স্বতন্ত্র ফাইলের মাপের সাথে সম্পর্কিত করে। যা হার্ড ডিস্ক ড্রাইভ (এইচডিডি) বা অন্যান্য স্টোরেজ মিডিয়াতে প্রচুর পরিমাণে বা অতিরিক্ত পরিমাণে স্থান গ্রহণ করে ""
নাথান বাসানিজ

10
আমি জানি না আপনি কোন ধরণের দীর্ঘ স্থানান্তর করেন, যেখানে ডুটি व्यवहार्य। ফলটি টিবি এবং এম ফাইলগুলিতে আসবে যখন নরকের মতো ধীরে ধীরে।
কেউ

2
আমার "দীর্ঘ স্থানান্তর" এর জন্য একটি ডু অপারেশনটি সম্পূর্ণ হতে প্রায় এক ঘন্টা সময় নেয়, যার সময় আরএসসিএনসি অনেক ধীর গতিতে চলছে, কারণ তারা ডিস্কটিতে অ্যাক্সেস নিয়ে লড়াই করে চলেছে।
অভি বেকার্ট

12

মূলত না। আপনি কেবল --progress পতাকা সহ প্রতি-ফাইলটিতে অগ্রগতি প্রদর্শন করতে পারেন তবে এটি প্রায় about

আমি অনুমান করছি আপনি এটির চারপাশে একটি র‌্যাপার লিখতে পারেন বা আপনি ইতিমধ্যে খুঁজে পাওয়া কোনও প্যাচ ব্যবহার করতে পারেন তবে নিজেকে অবশ্যই জিজ্ঞাসা করতে হবে এটি সত্যিই মূল্যবান কিনা, আরএসসিএনসি-র জন্য আসলে আপনার কি মোট অগ্রগতি দরকার?


এখানে একটি মোড়ক স্ক্রিপ্ট যা মোট অগ্রগতি এবং ফাইলের অগ্রগতিটিকে একটি দুর্দান্ত অগ্রগতি বার হিসাবে দেখায়: gist.github.com/JohannesBuchner/4d61eb5a42aea66ce90
j13r

1
আপনি --progressব্যবহার করে কাজের পদ্ধতি পরিবর্তন করতে পারেন --info=progress2, এটি আপনাকে বিশ্বব্যাপী অগ্রগতি দেখাবে। এটি কার্যকর হওয়ার জন্য আপনাকে ইনক্রিমেন্টাল রিকার্সিভ অ্যালগরিদমটি অক্ষম করতে হবে, সুতরাং--info=progress2 --no-inc-recursive
ম্যাটের

@ j13r আপনি এই উত্তরের উত্তর হিসাবেও ভাগ করতে পারেন! তার দুর্দান্ত বিকল্প!
স্কাইওয়ান্দের

8

আমি জেরোডাক্স থেকে উত্তরটি ব্যবহার করেছি এবং আমার নিজের ছোট্ট বাশ স্ক্রিপ্ট লিখেছি:

#!/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

আমি কীভাবে আরএসআইএনসি দিয়ে মোট অগ্রগতি প্রদর্শন করব তা অনুসন্ধান করেছিলাম এবং আমি এই পোস্ট থেকে একটি দরকারী উত্তর খুঁজে পেয়েছি: https://stackoverflow.com/questions/7157973/mon निरीक्षण-rsync-progress

মূলত , আপনি rsync 3.1.0 এর ডেভ সংস্করণে --info = प्रोग्रेस 2 ব্যবহার করতে পারেন । এখানে ডক যা বলেছেন তা হল :

একটি --info = অগ্রগতি 2 বিকল্প রয়েছে যা পৃথক ফাইলের পরিবর্তে পুরো স্থানান্তরের ভিত্তিতে পরিসংখ্যানকে আউটপুট করে। কোনও ফাইল নাম আউটপুট না করেই এই পতাকাটি ব্যবহার করুন (উদাহরণস্বরূপ - এড়ান -v বা সুনির্দিষ্ট --info = name0 উল্লেখ করুন যদি আপনি দেখতে চান যে অনেক নাম দিয়ে স্ক্রিনটি স্ক্রোল না করে ট্রান্সফার কীভাবে চলছে ((আপনাকে নির্দিষ্ট করার দরকার নেই - --info = অগ্রগতি 2 ব্যবহার করার জন্য অগ্রগতি বিকল্প


1
--info=name0স্বর্ণ 🌈👑
আইপ্যাচ

6

আমি জেরোডাক্স থেকে উত্তরটি ব্যবহার করেছি এবং আমার নিজের ছোট্ট বেস স্ক্রিপ্ট লিখেছি:

#!/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=$(find ${SOURCES} | wc -l)

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

আমি টোডো শুকনো রান এ পরিবর্তন করেছি

TODO=$(find ${SOURCES} | wc -l)

এটি ফাইলের সংখ্যা খুব দ্রুত খুঁজে পায়!


কাজ করবে , যাতে অনেক rsync --dry রানের চেয়ে ভাল!
আশাবাদী

4
findআপনি যদি rsyncস্থানীয়ভাবে থাকেন তবেই কাজ করে । rsync --dry-runদূরবর্তী উত্সের সাথেও কাজ করে ...
voretaq7

6

আপনার যদি সর্বশেষ আরএসআইএনসি না থাকে (যেমন, ওএস এক্সের 2.6.9 রয়েছে) এবং ব্যবহার করতে না পারেন তবে --info=progress2অগ্রগতিতে স্ক্রোলিং পাঠ্যের পৃষ্ঠা থেকে নিজেকে বাঁচানোর জন্য এখানে আরও একটি বিকল্প রয়েছে:

rsync -aPh <source> <destination> | xargs -L1 printf "\33[2K\rTransferring: %s"

এটি এক লাইনে মুদ্রণ করবে, সর্বশেষ ফাইলটির নাম স্থানান্তরিত হচ্ছে:

Transferring: the-latest.file


4

ব্যবহার

lsof -ad3-999 -c rsync

স্থানীয়ভাবে কোনও লুকানো ফাইলে আরএসসিএনসি ফাইলগুলি কীভাবে খোলা হয়েছে (ফাইলাইজগুলি দেখাবে) y


আমি এটি পোস্ট করতে চেয়েছিলাম for i in $(pgrep 'rsync'); do ls -l /proc/$i/fd; doneতবে আপনার সমাধানটি সহজ।
আলেেক্স গবি

4

আমি এটি একটি মন্তব্য করতে চাই কিন্তু যথেষ্ট খ্যাতি নেই। নির্বাচিত উত্তরে নট 101 এর মন্তব্যের প্রতিক্রিয়া হিসাবে - - প্রোগ্রেস বিকল্পটি দেখায় যে স্থানান্তরিত করতে মোট পরিমাণের মধ্যে কতগুলি ফাইল স্থানান্তরিত হয়েছে। এই পোস্টটি না দেখার এবং আউটপুটটি আরও যত্ন সহকারে না হওয়া পর্যন্ত আমি এটি বুঝতে পারি নি।

'টু-চেক' স্ট্যাটটি দেখায় যে মোট কতগুলি ফাইল বাকি রয়েছে। নতুন গন্তব্যস্থলে আরএসসি করার সময় এটি সবচেয়ে বেশি ব্যবহৃত হয় যাতে আপনি জানেন যে সমস্ত ফাইল পুরোপুরি অনুলিপি করা হবে।

ম্যান পৃষ্ঠা থেকে:

When [each] file transfer  finishes,  rsync  replaces  the
progress line with a summary line that looks like this:

    1238099 100%  146.38kB/s    0:00:08  (xfer#5, to-check=169/396)

In this example, the file was  1238099  bytes  long  in
total,  the average rate of transfer for the whole file
was 146.38 kilobytes per second over the 8 seconds that
it took to complete, it was the 5th transfer of a regu-
lar file during the current rsync  session,  and  there
are 169 more files for the receiver to check (to see if
they are up-to-date or not) remaining out  of  the  396
total files in the file-list.

3

এখানে সতর্কতামূলক দ্রষ্টব্য নোট করুন - এমনকি --info = অগ্রগতি 2 পুরোপুরি নির্ভরযোগ্য নয় কারণ এই শতাংশটি যখন প্রগতি প্রদর্শিত হচ্ছে তখন সেই সময়ের মধ্যে rync 'জানে' ফাইলের সংখ্যার উপর ভিত্তি করে। এটি সিঙ্ক করার জন্য প্রয়োজনীয় মোট মোট ফাইলের সংখ্যা নয় (উদাহরণস্বরূপ, যদি এটি গভীরভাবে নেস্টেড ডিরেক্টরিতে একটি বৃহত সংখ্যক ফাইল আবিষ্কার করে)। অগ্রগতির ইঙ্গিতটিতে --info = অগ্রগতি 2 'পিছনে ফিরে' আসে না তা নিশ্চিত করার একটি উপায় হ'ল সিএসকি শুরু করার আগে সমস্ত ডিরেক্টরিকে পুনরাবৃত্তভাবে স্ক্যান করতে আরএসসিএনকে বাধ্য করা হয়েছিল (বর্ধমানত পুনরাবৃত্তি স্ক্যান করার তার ডিফল্ট আচরণের পরিবর্তে), --no-inc-recursive বিকল্পটি সরবরাহ করে। তবে নোট করুন যে এই বিকল্পটি rsync মেমরির ব্যবহার এবং রান-টাইম বাড়িয়ে তুলবে।


বর্ধিত পুনরাবৃত্তি --no-inc-recursiveবিকল্প বা তার সংক্ষিপ্ত --no-i-rনাম ব্যবহার করে অক্ষম করা যেতে পারে । (অন্যান্য উত্তর দেখুন)
কোপ্পর

2

আমি একটি স্ক্রিপ্ট ব্যবহার করি যা আরএসসিএনসি প্রক্রিয়া (বা সেই বিষয়ে অন্য কোনও প্রক্রিয়া) জন্য / প্রো / // আইও থেকে তথ্য বের করে এবং স্থানান্তরিত হওয়ার জন্য মোট পরিমাণ জেনে অগ্রগতি গণনা করা হয়।

#!/bin/bash

usage()
{
   echo "usage: $0 PID BASEMSIZE [DELAY[s|m|h]]"
}

if [ $# -lt 2 ]; then
   usage
   exit 1
elif [ $# -eq 3 ]; then
   DELAY=$3
else
   DELAY=5s
fi

PID=$1
PBASE=`echo "scale=2; $2/1024"|bc`

R_PID=$PID
W_PID=$PID

R_SPEED_MAX=0
W_SPEED_MAX=0
R_SPEED_CUM=0
W_SPEED_CUM=0
R_SPEED_AVG=0
W_SPEED_AVG=0

ETA=0
ETA_H=0
ETA_M=0
ETA_S=0

while [ ! -r /proc/$PID/io ];
do
   clear
   echo "Waiting for process with PID=$PID to appear!"
   sleep 1
done

B_READ_PREV=`cat /proc/$R_PID/io|awk '$1 ~ /^read_bytes/ {print $2}'`
B_WRITE_PREV=`cat /proc/$W_PID/io|awk '$1 ~ /^write_bytes/ {print $2}'`
T1=`date +%s.%N`

count=0
while true
do
   [ ! -r /proc/$PID/io ] && break
   clear
   B_READ=`cat /proc/$R_PID/io|awk '$1 ~ /^read_bytes/ {print $2}'`
   B_WRITE=`cat /proc/$W_PID/io|awk '$1 ~ /^write_bytes/ {print $2}'`
   BL_READ=`echo "scale=2; ($B_READ-$B_READ_PREV)/1048576"|bc`
   BL_WRITE=`echo "scale=2; ($B_WRITE-$B_WRITE_PREV)/1048576"|bc`
   GB_DONE=`echo "scale=2; $B_WRITE/1073741824"|bc`
   PDONE=`echo "scale=2; $GB_DONE*100/$PBASE"|bc`
   T2=`date +%s.%N`
   TLOOP=`echo "scale=2; ($T2-$T1)/1"|bc`
   R_SPEED=`echo "scale=2; $BL_READ/$TLOOP"|bc`
   W_SPEED=`echo "scale=2; $BL_WRITE/$TLOOP"|bc`

   if [ $count -ge 1 ]; then
      R_SPEED_CUM=`echo "scale=2; $R_SPEED_CUM+$R_SPEED"|bc`
      R_SPEED_AVG=`echo "scale=2; $R_SPEED_CUM/$count"|bc`
      W_SPEED_CUM=`echo "scale=2; $W_SPEED_CUM+$W_SPEED"|bc`
      W_SPEED_AVG=`echo "scale=2; $W_SPEED_CUM/$count"|bc`
      [ `echo "scale=2; $W_SPEED > $W_SPEED_MAX"|bc` -eq 1 ] && W_SPEED_MAX=$W_SPEED
      [ `echo "scale=2; $R_SPEED > $R_SPEED_MAX"|bc` -eq 1 ] && R_SPEED_MAX=$R_SPEED
   fi

   if [ `echo "scale=2; $W_SPEED_AVG > 0"|bc` -eq 1 ]; then
      ETA=`echo "scale=2; (($PBASE-$GB_DONE)*1024)/$W_SPEED_AVG"|bc`
      ETA_H=`echo "scale=0; $ETA/3600"|bc`
      ETA_M=`echo "scale=0; ($ETA%3600)/60"|bc`
      ETA_S=`echo "scale=0; ($ETA%3600)%60"|bc`
   fi

   echo "Monitoring PID: $PID"
   echo
   echo "Read:       $BL_READ MiB in $TLOOP s"
   echo "Write:      $BL_WRITE MiB in $TLOOP s"
   echo
   echo "Read Rate:  $R_SPEED MiB/s ( Avg: $R_SPEED_AVG, Max: $R_SPEED_MAX )"
   echo "Write Rate: $W_SPEED MiB/s ( Avg: $W_SPEED_AVG, Max: $W_SPEED_MAX )"
   echo
   echo "Done: $GB_DONE GiB / $PBASE GiB ($PDONE %)"
   [ `echo "scale=2; $ETA > 0"|bc` -eq 1 ] && printf "ETA: %02d:%02d:%05.2f (%.2fs)\n" $ETA_H $ETA_M $ETA_S $ETA
   echo "Elapsed: `ps -p $PID -o etime=`"

   T1=`date +%s.%N`
   sleep $DELAY
   B_READ_PREV=$B_READ
   B_WRITE_PREV=$B_WRITE
   ((count++))
done
echo "----- Finished -------------------------------------------------------------------"

2

যদি আপনার সংস্করণটি বিকল্পটি rsyncগ্রহণ না করে তবে --info=progress2আপনি ব্যবহার করতে পারেন tqdm:

স্থাপন করা:

pip install tqdm

ব্যবহার করা:

y rsync -av / উত্স / গন্তব্য | tqdm --unit_scale | wc -l
10.0 মিট [:), 3.58 মিট / গুলি]

1

সম্ভবত আপনি pvrsync এর সাথে একত্রিত করতে পারেন । বিশেষত প্যারামিটার সাহায্য করে --sizeপারে। দস্তাবেজগুলির দিকে একবার নজর দেওয়া, এর মতো কিছু pv --size $(du -sb . | awk '{print $1}') | rsync -av . host:/your/pathকাজ করা উচিত।

এখানে আপনি ডক্স এবং সফ্টওয়্যার পাবেন find

এটি নিজে চেষ্টা করে দেখিনি।


1

এখানে কিছুটা দেরি হতে পারে তবে ভবিষ্যতের উত্তর সন্ধানকারীরা উপকৃত হতে পারেন।

এটি আমাকেও বাগিয়ে দিচ্ছিল তাই আমি ভেবেছিলাম আমি নীচে নেমে যাব এবং আমার প্রথম স্ক্রিপ্টটি লিখব। প্যাকেজ জেনিটি অবশ্যই ইনস্টল করা উচিত (sudo apt-get ইনস্টল জেনেনি), তবে আমি নিশ্চিত যে এটি সম্ভবত ইতিমধ্যে থাকবে। এছাড়াও, আমি যখন ডগ্রেটিএমটিআরএল (উইন্ডো ম্যানেজার নিয়ন্ত্রণ) ব্যবহার করি তখন এটি শেষ হয়ে গেলে অগ্রগতি ডায়ালগের শিরোনামটি পরিবর্তন করতে এটি সহজেই ইনস্টলযোগ্য তবে আপনি যদি না করেন তবে কোনও পার্থক্য হবে না। আমি আমার প্যানেলে এটি কখন শেষ হয় তা দেখতে চাই।

স্ক্রিপ্টটি মূলত উত্স এবং গন্তব্য ডিরেক্টরি জিজ্ঞাসা করে, du ব্যবহার করে উত্সের চেয়ে গন্তব্যের শতকরা অংশ গণনা করে এবং একটি অগ্রগতি বার প্রদর্শন করে।

দ্রষ্টব্য: এটি কেবলমাত্র সম্পূর্ণ ডিরেক্টরি / ফাইল সিঙ্কের জন্য কাজ করে (আমি সাধারণত এটি অ্যাপ্লিকেশন ক্যাশে ব্যাকআপ তৈরি করতে ব্যবহার করি), সুতরাং --excolve = / file / in / উত্স-ডিরেক্টরি বিকল্প নেই। গন্তব্য ডিরেক্টরিতে যদি ফাইল / ডিরেক্টরি থাকে তবে ডিরেক্টরি ডিরেক্টরিতে কাজ করবে না। আমি নিশ্চিত না যে এটি দূরবর্তী উত্স / গন্তব্যগুলির জন্য কাজ করে যেহেতু এটির পরীক্ষা করার জন্য আমার কখনই এর প্রয়োজন বা সংস্থান ছিল না।

গীত। এই স্ক্রিপ্টটি খুব খারাপভাবে লেখা বা খুব অকার্যকর, (স্ক্রিপ্ট-ভার্জিন) হতে পারে তবে কমপক্ষে এটি তার উদ্দেশ্য হিসাবে কাজ করে এবং অবশ্যই আপনার প্রয়োজন অনুসারে এটি সম্পাদনা এবং উন্নত করতে আপনাকে স্বাগত জানাই। PSS। এছাড়াও, আরএসসিএনকে মেরে বাতিল বোতামটি পেতে পারেনি তাই আমি এটি সরিয়ে দিয়েছি।

    #!/bin/bash
set -e;

WELC="Running RsyncP as $USER";

function echo_progress()
{
    while (($TRANSFER_SIZE > 1000));    
    do  
        DEST_SIZE=$(du -s $DEST_FOLDER | cut -d / -f 1); 
        ((TRANSFER_SIZE=$SOURCE_SIZE-DEST_SIZE)); 
        PROGRESS_PERC=$((DEST_SIZE*100/SOURCE_SIZE));
        echo $PROGRESS_PERC;
        sleep 0.1s;
    done;
    echo 100;
    zenity --info --width=250 --title=RsyncP --text="File syncing complete!";
}

function get_input()
{
    dirs=$(zenity --forms --width=500 --title="RsyncP" --text="Enter source And destination directories" --add-entry="Source: " --add-entry="Destination: " --separator=" ");

    SOURCE_FOLDER=$(echo $dirs | cut -d' ' -f 1);
    DEST_FOLDER=$(echo $dirs | cut -d' ' -f 2);

    OPTIONS=-$(zenity --list --title="RsyncP Options" --text="Select rsync options" --separator='' --height=470 --width=470 --checklist --column "activate" --column "Option" --column "Description" FALSE v "Verbose (Terminal only)" FALSE q "Quiet, supress non-error messages (Terminal only)" FALSE P "Progress (Terminal only)" FALSE a "Archive (lrpog)" TRUE r "Recurse into directories" FALSE p "Preserve permissions" FALSE o "Preserve owner" FALSE g "Preserve group" FALSE l "Copy symlinks as symlinks");

    zenity --question --no-wrap --title="RsyncP" --width=500 --text="rsync  $OPTIONS $SOURCE_FOLDER $DEST_FOLDER\nDo you want to continue?";

    SOURCE_SIZE=$(du -s $SOURCE_FOLDER | cut -d / -f 1); 
    DEST_SIZE=$(du -s $DEST_FOLDER | cut -d / -f 1); 
    PROGRESS_PERC=$((DEST_SIZE*100/SOURCE_SIZE)); 
    TRANSFER_SIZE=1001;
}

if [ "$(id -u)" != "0" ]; then
    zenity --question --title=RsyncP --text="$WELC, Continue?";
    get_input;
    rsync  $OPTIONS $SOURCE_FOLDER $DEST_FOLDER & 
    echo_progress | zenity --progress --title=RsyncP --no-cancel --auto-close --text="Copying from \n$SOURCE_FOLDER to \n$DEST_FOLDER" ;

else            
    zenity --question --title=RsyncP --text="$WELC, Continue?";
    get_input; 
    sudo rsync  $OPTIONS $SOURCE_FOLDER $DEST_FOLDER & 
    echo_progress | zenity --progress --title=RsyncP --no-cancel --auto-close --text="Copying from \n$SOURCE_FOLDER to \n$DEST_FOLDER" ;
fi

YAD এ একবার দেখুন। এটি জেনিটির কাঁটাচামচ (পুনর্লিখন?) এবং এটি জেনিটির মতো ... তবে স্টেরয়েডগুলিতে। আমার স্ক্রিপ্টগুলি এটি জেনিটির কাছে ফ্যালব্যাক সহ সমস্তর জন্য ব্যবহার করে যেহেতু আমার কাছে কেবলমাত্র জেনটি সহ একটি মেশিন রয়েছে। কমান্ড বিকল্পগুলি এর জন্য যথেষ্ট অনুরূপ তবে আপনি জেনিটির সাথে অনেকগুলি অভিনবতা looseিলা করেছেন।
ডকসালভেজার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.