সিপি স্পিড এবং শতাংশ অনুলিপি করা কি সম্ভব?


251

নটিলাস ব্যবহার করে বড় ফাইলগুলি অনুলিপি করার সময় আমার সমস্যা হচ্ছে (এটি আটকে যায়)। আমি ব্যবহার কপি করতে হবে, cp। আমি জানতে চাই যে এমন কোনও পরামিতি রয়েছে যা% অনুলিপি করে এবং স্থানান্তর গতিও দেখায়।


39
আপনি rsyncপরিবর্তে ব্যবহার করতে পারে cp। এটি একটি --progressবিকল্প আছে।
frostschutz

2
Midnight Commanderএছাড়াও ভাল কাজ করে, এবং প্রগতি বারগুলির সাথে একটি সুন্দর পাঠ্য-ভিত্তিক ইউআই রয়েছে, তবে সম্ভবত এটি ইনস্টল করা না। mcকমান্ড প্রম্পটে চেষ্টা করুন। এছাড়াও, স্পষ্টতই, এটি না cp
একটি সিভিএন

3
ব্যবহার rsyncসঙ্গে --progressশুধু আমার জিনিসটা কী ঘটছে তা প্রণীত। এটি যখন 100% এ পৌঁছায় তখন আটকে যায় এবং এরপরে কয়েক মিনিট শেষ হয়। আমার মনে হয় নটিলাসের সাথে একই ঘটনা ঘটছে। যাইহোক এটি ইতিমধ্যে অন্য প্রশ্ন, সুতরাং এই প্রশ্নের সর্বোত্তম উত্তর হ'ল rsync --progressএটি আকার,%, গতি এবং অতিবাহিত সময় দেখায়।
yzT

2
আরএসআইএনসি'র একটি সমস্যা হ'ল এটি খাঁটি অনুলিপি থেকে ধীর গতিতে চলে। আমার বড় সার্ভারে, পার্থক্যটি যথাক্রমে 60MB / s এবং 300MB / s।
pdwalker

1
@pdwalker এমনকি -Wঅপশন সহ? আমার সমস্ত হোস্টে rsyncপ্রায় হিসাবে দ্রুত হিসাবে cp... এত কাছে আমি নিয়মিত ব্যবহার rsyncপরিবর্তে cp
স্কেপেরেন

উত্তর:


193

rsyncএকটি পতাকা আছে progress2যা সামগ্রিক শতাংশ দেখায়:

rsync --info=progress2 source dest

5
--info = প্রগতি 2 এখনও এটি একটি ডিফল্ট সংগ্রহস্থল হিসাবে তৈরি করে নি এবং এটি এখানে 2015 2015 একটি ভাল ধারণা বলে মনে হয়।
লনিবিজ

1
--info=progress2অবশেষে অন্তর্ভুক্ত version 3.1.0 protocol version 31। হতে পারে আপনি নিজের উত্তরটি সম্পাদনা করতে পারবেন, yzT।
সোপালাজো ডি আরিরিজেজ

1
আমি লক্ষ্য করেছি --info=progress2যে আরএসএনসি দ্রুত জ্বলছে! 200 এমবি / সেকেন্ড, যখন উইন্ডোজ 90 এমবি / সেকেন্ডের বেশি হয় না!
রিনিফ্রোগার

1
@ রেনেফ্রোগার যদিও এটিই আসল গতি হতে পারে (ডিভাইসের উপর নির্ভর করে), প্রায়শই লিনাক্সে দ্রুত গতি সত্যিই মিথ্যা এবং অনুলিপিটি শেষ হওয়ার পরেও সিস্টেমটি ডিভাইসে লিখতে থাকে, উইন্ডোজ এর বিপরীতে যে আপনি ডিভাইসটি বের করে দিতে পারেন প্রায় সঙ্গে সঙ্গেই. আপনি যদি বড় ফাইলগুলি অনুলিপি করেন তবে আপনি কীভাবে দ্রুত গতিতে এটি শুরু হবে তা লক্ষ্য করতে পারেন তবে এটি স্ট্যান্ডার্ডটি পর্যন্ত নেমে যায়।
yzT

7
এটা আমার সাথে কাজ করেছে ন্যায়বিচারের সাথে --progress। আরএসসিএনসি সংস্করণ 3.0.9
এড্রিয়ানটিএনটি

103

আপনি যদি অন্য সরঞ্জামগুলির অনুমতি দেন তবে cpঅবশ্যই এটি সম্ভব। একটি একক ফাইলের জন্য আপনি ব্যবহার করতে পারেন pv। এটি একটি দুর্দান্ত সরঞ্জাম যা সুন্দর পরিসংখ্যান সরবরাহ করে।

pv inputfile > outputfile

আপনার যদি একাধিক ফাইল বা ডিরেক্টরি থাকে তবে আপনি টার ব্যবহার করতে পারেন:

tar c sourceDirectory | pv | tar x -C destinationDirectory

আপনি এটি একটি শেল ফাংশন মোড়ানো করতে পারেন। এটি টাইপ করা কম এবং আপনি শব্দার্থকগুলির কাছাকাছি পেতে পারেন cp। এখানে একটি খুব সাধারণ (এবং ত্রুটি-প্রমাণ নয়!) ফাংশন রয়েছে:

cpstat () {
  tar c "$1" | pv | tar x -C "$2"
}

মনে রাখবেন যে কয়েকটি সংস্করণ tarউপরোক্ত উল্লিখিত সিনট্যাক্সকে সমর্থন করে না (উদাঃ সোলারিস tar) এবং আপনাকে নিম্নলিখিত রূপটি ব্যবহার করতে হবে:

cpstat () {
  tar cf - "$1" | pv | (cd "$2";tar xf -)
}

আপনি এটিকে এভাবে ডাকেন

cpstat sourceDirectory destinationDirectory

আপনি এটিকে আরও বাড়িয়ে তুলতে পারেন, যাতে pvএটি অবশিষ্ট সময়ের একটি অনুমান সরবরাহ করে।

আর একটি সমাধান (যেমন একটি মন্তব্যে frostschutz উল্লেখ করা হয়েছে) --progressবিকল্পটির সাথে rsync ব্যবহার করা :

rsync --progress -a sourceDirectory destinationDirectory

1
সিপিস্ট্যাট পেস্টবিনে চলছে =)
ম্যাট

7
এটি আপনাকে ট্রান্সফার গতি দেবে, তবে ইটিএ নয়, কারণ pvপাইপের মাধ্যমে কতটা ডেটা আসবে তা জানে না। আপনি এটি ব্যবহার করে নির্দিষ্ট করতে পারেন -s। যেমন প্রথমে du -sh sourceDirectoryএকটি (রুক্ষ) ধারণা পেতে, এবং তারপর এটি পাস pv, এরকম: pv -s 100m
জান ফ্যাব্রি

1
--info = অগ্রগতি 2 আপনাকে ডিরেক্টরি স্তরের অগ্রগতির পরিসংখ্যান দেয়।
অ্যালেক্সLordThorsen

vbuf(ডেবিয়ান, উবুন্টু) pvএর ভার্চুয়াল রিং বাফারের কারণে সম্ভবত বেশ দ্রুত
গতিযুক্ত

@Skaperen আমি জানি না vbuf। তবে যেমনটি মনে হয় এটি এই মুহূর্তে দেবিয়ান অস্থির এবং তাই প্রায়শই সার্ভারগুলিতে পাওয়া যায় না যা সাধারণত ডেবিয়ান স্থিতিশীল চলছে।
মার্কো

58

rsync অনুলিপি করার অগ্রগতির সময় অগ্রগতি দেখানোর জন্য সেরা কাজ করে।

উদা:

rsync -avh --progress sourceDirectory destinationDirectory

27

অন্যান্য উত্তরে বর্ণিত হিসাবে, সিপি সেই কার্যকারিতা সরবরাহ করে না। তবে, অগ্রগতি (পূর্বে সিভি নামে পরিচিত) একটি ছোট সরঞ্জাম যা এই অনুপস্থিত বৈশিষ্ট্যটি সরবরাহ করতে খুব সহায়ক।

এই সরঞ্জামটি একটি টিনি ডার্টি লিনাক্স কেবল * সি কমান্ড হিসাবে বর্ণনা করা যেতে পারে যা কোর্টিলস বেসিক কমান্ডগুলি (সিপি, এমভি, ডিডি, টার, জিজিপ / গানজিপ, বিড়াল, ...) সন্ধান করে এবং বর্তমানে আপনার সিস্টেমে চলছে এবং অনুলিপি করা শতাংশের শতাংশ প্রদর্শন করে ডেটা।

আমি গত কয়েক মাস ধরে এটি ব্যবহার করে আসছি এবং এটি শক্ত।


সমস্ত ফাইল সিস্টেমের সাথে কাজ করে বলে মনে হচ্ছে না (যেমন সিআইএফ) তবে +1, এমন পাগল
টিংয়ের

1
নোট করুন যে এই প্রকল্পটিকে এখন "অগ্রগতি - কোরিটিলস প্রগ্রেস ভিউয়ার (পূর্বে সিভি হিসাবে পরিচিত)" বলা হয়।
chappjc

17

সিপি স্পিড এবং শতাংশ অনুলিপি করা কি সম্ভব?

হ্যাঁ, cpটার্মিনালে কমান্ডের অগ্রগতি প্রদর্শিত সম্ভব ।


পদ্ধতি # 1: (ব্যবহার progress)

একটি নতুন টার্মিনাল খুলুন এবং progressএটি টাইপ করলে cpকমান্ড এবং অন্যান্য কমান্ডের অগ্রগতি প্রদর্শিত হবে যেমন:

cp, mv, dd, tar, cat, rsync, grep, fgrep, egrep, cut, sort, md5sum, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, adb, gzip, gunzip, bzip2, bunzip2, xz, unxz, lzma, unlzma, 7z, zcat, bzcat, lzcat, split, gpg

আপনি ইনস্টল না করে থাকেন তাহলে progress, আপনি এটি সংগ্রহস্থল থেকে এ ইনস্টল করতে পারেন, উদাহরণস্বরূপ CentOSএই কমান্ড সঙ্গে yum -y install progress

তারপরে আপনি cpপটভূমিতে কমান্ড চালানোর পরে , বা cpসাধারণত চালানোর পরে , অন্য একটি টার্মিনাল খুলুন, সুতরাং এই আদেশটি চেষ্টা করুন:

# progress -m

আউটপুট দেখুন:

[30904] cp /home/user/file.mp4
        2.3% (200.9 MiB / 8.4 GiB) 3.6 MiB/s remaining 0:38:58

পদ্ধতি # 2: (প্যাচ ব্যবহার করুন cp)

অথবা জিএনইউ ডাউনলোড করুন coreutilsএবং এটি প্যাচ করুন।

cd /tmp
wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.21.tar.xz
tar -xvJf coreutils-8.21.tar.xz
cd coreutils-8.21
wget https://raw.githubusercontent.com/atdt/advcpmv/master/advcpmv-0.5-8.21.patch
patch -p1 -i advcpmv-0.5-8.21.patch

চালান:

export FORCE_UNSAFE_CONFIGURE=1
./configure
make

কপি দুটি ফাইলের cpএবং mvঅধীনে loacated coreutils-8.21/src/করতে /usr/local/bin:

cp src/cp /usr/local/bin/cp
cp src/mv /usr/local/bin/mv

বা আপনার ফাইল ম্যানেজারটিকে রুট হিসাবে ব্যবহার করে এটি অনুলিপি করুন

নিম্নলিখিত লাইনগুলি আপনার যুক্ত করুন ~/.bashrc:

alias cp='cp -gR'
alias mv='mv -g'

লগআউট এবং লগইন

প্রগতি দণ্ডটি লেখকের পরামর্শ অনুযায়ী –gবা ছাড়াই প্রদর্শিত হতে পারে–progress-bar

আউটপুট দেখুন:

0 files copied so far...                                              194.4 MiB /   8.4 GiB
[||--------------------------------------------------------------------------------]  2.3 %
Copying at   3.3 MiB/s (about 0h 5m 47s remaining)
/home/user/file.mp4                                                   194.4 MiB / 446.1 MiB
[||||||||||||||||||||||||||||||||||||----------------------------------------------] 43.6 %

উত্স: linuxhelp


1
এটি cpপ্যাচের আসল উত্সের মতো দেখায় : web.archive.org/web/20131115171331/http://beatex.org/web/…
মোদী

1
progressকমান্ড সম্পর্কে ইঙ্গিতটির জন্য +1
পিটার

এটিই একমাত্র আসল উত্তর
অ্যালেসিও

14

লক্ষ্য করা যায় এই পোস্টিং কিছুটা পুরানো ছিল। তবে আমি যেমন সমস্যার সমাধান করেছি, তখন আমি ভেবেছিলাম আমার সমাধান পোস্ট করব।

পরিস্থিতি: আমাদের একটি খুব বড় ডিরেক্টরি-কাঠামো রয়েছে যা আমরা অনুলিপি করতে চাই, তাই আমরা একটি টার্মিনাল উইন্ডোতে সিপি-আর স্যুরসিডির ডাস্টডির কমান্ডটি জারি করি।

অন্য একটি টার্মিনাল উইন্ডো খুলুন বা প্রেক্ষাপটটিকে প্রেক্ষাপটে চাপ (Ctrl+Z,bg<CR>)দিন, তারপরে একটি অগ্রগতি সূচকটি ঘেটো উপায়ে তৈরি করুন:

আমরা প্রথমে যে ডিরেক্টরি কাঠামোটি অনুলিপি করতে চাই তার মোট আকার পাই, আপনি এটি দিয়ে:

du -sh /path/sourcedirectory/

ফলটিকে গিগাবাাইটে (জি) এ রূপান্তর করুন, তারপরে ফলটি পরিবর্তনশীল উত্সতে আপনি যে ফলাফল পেয়েছেন তার জন্য এনটি প্রতিস্থাপন করুন। একবার আপনি সোর্সাইজ এবং ডাস্টডির (গন্তব্য ডিরেক্টরি) inোকানোর পরে নীচের কমান্ডটি চালান।

while true; do sourcesize=n destdir=/path/destinationdirectory/ copyprogress="$(export | du -sh $destdir | awk '{print $1}' | sed 's/[^0-9.]*//g' )" ; echo "scale=3 ; $copyprogress / $sourcesize * 100" | bc | xargs echo -n ; echo % completed ; sleep 10 ; done

এটি প্রতি 10 সেকেন্ডে এই বার্তাগুলির সাথে অগ্রগতিটি মুদ্রণ করবে:

0.100% completed
0.200% completed
0.300% completed 
... etc

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


এটি আসলে আমার ব্যবহারের ক্ষেত্রে উপযুক্ত, তাই এটি পোস্ট করার জন্য ধন্যবাদ! আমি কেবল একটি ফাইল নয়, হাজার হাজার ফাইল দিয়ে একটি বিশাল ডিরেক্টরি অনুলিপি করার অগ্রগতি সম্পর্কে জানতে চাই, যাতে অন্য সমাধানগুলি সত্যিই আমাকে সহায়তা করে না।
ইব্রাহিম

এটি দুর্দান্ত especially এখন আমি প্রক্রিয়াটি খুব সহজেই ব্যাকগ্রাউন্ড করতে এবং এটিতে সন্ধান করতে পারি। অসাধারণ!
রিলে

8

মার্কোর উত্তরের উন্নতি করতে, আজ আমি এই সংস্করণটি লিখেছি cpstat, যাতে আপনি অনেক ডিরেক্টরি অনুলিপি করতে পারেন এবং শেষ পরামিতিটি গন্তব্য পথ হিসাবে ব্যবহার করতে পারেন। মনে রাখবেন যে আপনি যদি উত্স হিসাবে আপেক্ষিক গভীর পথ ব্যবহার করেন তবে আপনি ধন্যবাদ হিসাবে tarস্বয়ংক্রিয়ভাবে একই নির্ভরশীল ডিরেক্টরি ট্রি তৈরি করতে পারেন।

function cpstat () {

    tar -cf - "${@: 1: $#-1}" |
    pv -s "$( du -cs -BK --apparent-size "${@: 1: $#-1}" |
              tail -n 1 |
              cut -d "$(echo -e "\t")" -f 1)" |
    ( cd "${@: $#}"; tar -xf - )

;}

6

এর মানক সংস্করণে নয় cp

আপনি সিপির ব্যাকগ্রাউন্ড করতে পারেন এবংcp শেষ হওয়ার অপেক্ষায় মাপটি তালিকাবদ্ধ করতে পারেন।

আমি এই পার্লটি একটি একক ফাইলের বিকাশ পর্যবেক্ষণ করতে ব্যবহার করি তবে এটি সিপি থেকে বাহ্যিকভাবে চালিত হয় (বা অন্য কিছু যা করছি আমি)



5

যদিও rsyncআপনাকে কিছু অগ্রগতি পরিসংখ্যান দেবে, আপনি যদি একটি অগ্রগতি বার চান তবে আপনার ব্যবহার করা উচিত pv

আপনি একটি সহজ সিনট্যাক্স সহ cpvএকটি র‌্যাপার ব্যবহার করতে পারেন , এর pvথেকে অনুরূপ cpযা আপনি পুনরাবৃত্তভাবে ডিরেক্টরিগুলি অনুলিপি করতে ব্যবহার করতে পারেন

এখানে চিত্র বর্ণনা লিখুন

আপনি এটি এখানে পেতে পারেন


ইঙ্গিতটির জন্য +1 pv। ভাল লাগছে!
পিটার

4

mc(মধ্যরাতের কমান্ডার) এর মতো একটি সরঞ্জাম ব্যবহার করা অন্যান্য উত্তরের জন্য একটি ভাল বিকল্প বিকল্প হতে পারে।

এটি একটি সাধারণ ফাইল ম্যানেজার যা আপনার অগ্রগতি অনুলিপি / সরানো দেখায়।


4

dd status=progress

GNU Coreutils 8.24+ (উবুন্টু 16.04) এ বিকল্প যুক্ত করা হয়েছে:

dd if=src of=dst status=progress

স্টাডাউট একটি পর্যায়ক্রমিকভাবে আপডেট হওয়া লাইন যেমন:

462858752 bytes (463 MB, 441 MiB) copied, 38 s, 12,2 MB/s

আরও দেখুন: আপনি কিভাবে ডিডির অগ্রগতি পর্যবেক্ষণ করবেন? | উবুন্টুকে জিজ্ঞাসা করুন


4

আরেকটি সহজ সমাধান মাত্র হয় ঘড়ি নিম্নরূপ আউটপুট ফোল্ডার:

লিনাক্স / Cygwin: watch -n 10 --differences du -sk --apparent-size <WATCHED_FOLDER>

FreeBSD 'র: gnu-watch -n 10 --differences du -sk <WATCHED_FOLDER>

এই সুবিধাজনক ইউটিলিটি চলবে duএবং পার্থক্যগুলি হাইলাইট করবে।

আর একটি সম্ভাব্য সমাধান হ'ল একটি সাধারণ স্ক্রিপ্ট লিখুন যা লুপ করে, কল করে duএবং থ্রুপুটটির মোটামুটি অনুমান করে।


3

এই সরঞ্জামটি একটি লিনাক্স ইউটিলিটি কমান্ড যা বর্তমানে আপনার সিস্টেমে চলছে কোর্টিলস বেসিক কমান্ড (সিপি, এমভি, ডিডি, টার, জিজিপ / গানজিপ, বিড়াল ইত্যাদি) অনুসন্ধান করে এবং অনুলিপি করা তথ্যের শতাংশ প্রদর্শন করে:

https://github.com/Xfennec/cv


1
এটি ইতিমধ্যে নভেম্বরের '14 এ ইমর মোস্তফা দ্বারা পরামর্শ দেওয়া হয়েছে।
দুবু

2

আমার সবেমাত্র একটি মামলা ছিল যেখানে প্রাপ্ত ফাইল সিস্টেমে FUSE বাগের কারণে সিপি কম বা বেশি ব্লক হয়ে গিয়েছিল।

আপনি যদি কেবল সিপি থেকে স্যুইচ করতে না পারেন (যেমন --sparse = সর্বদা) এবং অগ্রগতির জন্য সত্যিকারের নির্ভরযোগ্য এমন কিছু চান, তবে / প্রোকে যান।

Every 2.0s: cat /proc/20977/io                                                      Thu Sep 28 04:08:57 2017

rchar: 268573800
wchar: 268500992
syscr: 4112
syscw: 4097
read_bytes: 268697600
write_bytes: 0
cancelled_write_bytes: 0

0

ভিসিপি - একটি অভিশাপ ইন্টারফেসে ফাইলগুলি অনুলিপি করুন (লিনাক্সে অগ্রগতি বারটি দেখান)।

বর্ণনা: ভিসিপি কেবল পাঠ্য আউটপুট উপলভ্য, একটি অভিশাপ ইন্টারফেসে ফাইল এবং ডিরেক্টরিগুলি অনুলিপি করে। কিছু নতুন বৈশিষ্ট্য যুক্ত করার সময় এর বিকল্পগুলি এবং আউটপুট BSD এর সিপির মতো similar

এটি এর উপর তথ্য সরবরাহ করে:

  • ফাইল অনুলিপি এবং অনুলিপি করতে বাম
  • ডেটা লিখিত এবং মোট তথ্য আকার
  • তথ্য প্রতি সেকেন্ডে লেখা হচ্ছে
  • দুটি স্থিতি দণ্ড, একটি বর্তমান ফাইলের স্থিতি দেখায়, অন্যান্য মোট স্থিতি (1 টি ফাইল বাদে উভয়ই বর্তমান দেখায়) এবং শতাংশ

যখন আউটপুট কনসোলে প্রেরণ করা হয়:

  • একটি স্ট্যাটাস বার
  • আকার অনুলিপি এবং গতি

ভিসিপি ম্যান পেজ: https://linux.die.net/man/1/vcp

Vcp-2.2.tar.gz ডাউনলোড করুন এ থেকে:

http://distfiles.gentoo.org/distfiles/vcp-2.2.tar.gz

নির্ভরতা: অভিশাপ।

উবুন্টুতে, ইনস্টল করুন:

sudo apt-get install libncurses-dev

অথবা

sudo apt-get install libncurses5-dev

ভিসিপি ইনস্টল করুন:

make && make install

ম্যানুয়াল:

man vcp
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.