অন্যথায়, কোনও বিকল্প কমান্ড লাইনের ইউটিলিটি কি এটি অর্জন করতে পারে?
অন্যথায়, কোনও বিকল্প কমান্ড লাইনের ইউটিলিটি কি এটি অর্জন করতে পারে?
উত্তর:
যদিও cp
এই কার্যকারিতাটি পায় নি, আপনি এটি করতে ব্যবহার করতে পারেন pv
:
pv my_big_file > backup/my_big_file
দ্রষ্টব্য: এই পদ্ধতিটি ফাইলের অনুমতি এবং মালিকানা হারাবে। এইভাবে অনুলিপি করা ফাইলগুলিতে একই অনুমতি থাকবে যেমন আপনি নিজেরাই তৈরি করেছেন এবং তা আপনারই হবে।
এই উদাহরণস্বরূপ, pv
মূলত স্টডআউট * এ ফাইলটি আউটপুট করে যা আপনি >
অপারেটরটি ব্যবহার করে কোনও ফাইলে পুনর্নির্দেশ করেন । একই সাথে, এটি যখন আপনি এটি করেন তখন টার্মিনালের অগ্রগতি সম্পর্কে তথ্য মুদ্রণ করে।
এটি দেখতে এটির মতো:
stefano@ubuntu:~/Data$ pv my_big_file > backup/my_big_file
138MB 0:00:01 [73.3MB/s] [=================================>] 100%
আপনার সিস্টেমে আপনাকে পিভি ইনস্টল করতে হবে (বিকল্পভাবে, টাইপ করুন sudo apt-get install pv
)।
*: প্রযুক্তিগত বিট
ইউনিক্সের মতো সিস্টেমে ডেটাগুলির তিনটি গুরুত্বপূর্ণ স্ট্রিম রয়েছে: স্টডআউট (স্ট্যান্ডার্ড আউটপুট), স্ট্ডার (স্ট্যান্ডার্ড ত্রুটি) এবং স্টিডিন (স্ট্যান্ডার্ড ইনপুট)। প্রতিটি প্রোগ্রাম তিনটি আছে, তাই কথা বলতে। >
ফেরৎ অপারেটর একটি ফাইলে প্রোগ্রাম আউটপুট পুননির্দেশনা। যুক্তি ছাড়াই, যেমন আপনি উপরে দেখছেন, >
কোনও প্রোগ্রামের স্ট্যান্ডার্ড আউটপুটটিকে কোনও ফাইলে পুনঃনির্দেশ করে । cp
মূলত এর চেয়ে কল্পিত কিছুই করে না
cat source > destination
(যেখানে cat
কেবল একটি ফাইল পড়ে এবং এটি স্টাডআউটে প্রিন্ট করে)। pv
ঠিক বিড়ালের মতো, তবে আপনি যদি এটির আউটপুট স্ট্রিম অন্য কোথা থেকে পুনর্নির্দেশ করেন তবে এটি অগ্রগতির তথ্যকে পরিবর্তে স্টডআউটে মুদ্রণ করবে।
man pv
এটি সম্পর্কে আরও জানতে একবার দেখুন look
ডিআর এই উত্তরে যেমন পরামর্শ দেয় তেমন একটি বিকল্প হ'ল পরিবর্তে আরএসসিএন ব্যবহার করা:
$ rsync -ah --progress source-file destination-file
sending incremental file list
source-file
621.22M 57% 283.86MB/s 0:00:01
এটি অগ্রগতি দেখানোর সময় ফাইলগুলির অনুমতি / মালিকানা সংরক্ষণ করবে।
alias cp="rsync -avz"
সিপি পুরানো।
pv
যান তবে আপনি স্নুপে যেতে /proc/PID of cp/fd
এবং /proc/PID of cp/fdinfo
অগ্রগতিটি বের করতে পারেন । (গতি অনুমান করা এটি আপনার উপর নির্ভর করে)) আমি এই কৌশলটি দেখার জন্য ব্যবহার করি updatedb
।
-z
সম্ভবত কেবলমাত্র নেটওয়ার্ক অনুলিপিগুলির জন্যই ব্যবহার করা উচিত; একটি স্থানীয় অনুলিপি জন্য ডেটা সংকুচিত এবং সংক্ষেপণ খাঁটি ওভারহেড।
rsync
যুক্ত না করার বিষয়ে নিশ্চিত হন /
(বা উদাহরণস্বরূপ বাশ সম্পূর্ণ হলে এটি স্বয়ংক্রিয়ভাবে সেখানে রাখে) remove অন্যথায় আপনি cp
(বা gcp
) ব্যবহার করার চেয়ে আলাদা ফলাফল পাবেন ।
নেই। কেন এখানে দেখুন । যদিও এটি আপনার প্রয়োজনের চেয়ে বেশি কাজ করে, rsync
তার একটি --progress
প্যারামিটার রয়েছে। -a
অনুমতি, ইত্যাদি রাখা হবে, এবং -h
মানুষের পাঠযোগ্য হবে।
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)
-r
ডিরেক্টরি পুনরাবৃত্তি করতে পতাকাটিকে সমর্থন করে । এমনকি এটি সিপি-র সরাসরি প্রতিস্থাপন হিসাবে alias cp="rsync -ah --progress"
--progress
আমার মাথা স্পিন করে makes টার্মিনালের সমস্ত আউটপুট প্রদর্শন দেখছি। সুতরাং যারা এওএল কীওয়ার্ড অনুসন্ধান থেকে এখানে আসছেন rsync -ah --info=progress2 [source] [destination]
তারা আউটপুটটিকে আরও বেশি বুদ্ধিমান ⚕️ IM উপায়ে আইএমএইচওতে উপস্থাপন করেন।
যদি আপনি দেখতে চান যে আপনার ফাইলগুলি সঠিকভাবে স্থানান্তর করছে কিনা আপনি ব্যবহার করতে পারেন gcp
এবং gcp
সিপির মতো তবে ডিফল্টরূপে আপনাকে একটি অগ্রগতি বার দেয় যাতে আপনি কী অনুলিপি করছেন তা দেখতে পান। প্রোগ্রামটির উইকি নোট হিসাবে , gcp
বেশ কয়েকটি দরকারী বৈশিষ্ট্য রয়েছে যেমন
- স্থানান্তর অগ্রগতি ইঙ্গিত
- ত্রুটি অনবরত অনুলিপি করা (পরবর্তী ফাইল এ যান)
- স্ট্যাটাস লগিং অনুলিপি করুন: জিসিপি তার সমস্ত ক্রিয়াকলাপ লগ করে যাতে কোন ফাইলটি সফলভাবে অনুলিপি করা হয়েছে তা জানা সম্ভব
- টার্গেট ফাইল সিস্টেমের সীমাবদ্ধতাগুলি হ্যান্ডেল করতে নাম ম্যাঙ্গলিং (উদাহরণস্বরূপ FAT এর সাথে বেমানান অক্ষর "*" বা "?" মুছে ফেলা)
তবে, সরঞ্জামটি ব্যবহার করার সময়ও যখন অগ্রগতি বারটি 100% এ পৌঁছেছে, আপনার মিডিয়া নিরাপদে সরিয়ে দেওয়ার আগে আপনার টার্মিনাল প্রম্পটটি পুনরায় উপস্থিত হওয়া পর্যন্ত আপনাকে অবশ্যই অপেক্ষা করতে হবে যাতে আপনি নিশ্চিত করতে পারেন যে স্থানান্তর প্রক্রিয়াটি সফলভাবে শেষ হয়েছে।
gcp
ফাইলগুলি অনুলিপি করতে ব্যবহৃত হয় এবং বিকল্প রয়েছে যেমন --preserve
বিভিন্ন বৈশিষ্ট্য এবং অনুমতি সংরক্ষণ করা যায় এবং --recursive
যাতে পুরো ডিরেক্টরি অনুলিপি করা যায়। অনলাইনে উবুন্টু ম্যানপেজে প্রবেশ করে man gcp
বা এর বিকল্পগুলির আরও তথ্য পাওয়া যাবে । একটি টিউটোরিয়ালও এই সাইটে উপলব্ধ ।
এর gcp
সাহায্যে সংগ্রহস্থলগুলি থেকে ইনস্টল করুন
sudo apt-get install gcp
( দ্রষ্টব্য : উবুন্টু ১২.১০ এ নতুন অটোমઉન્ટ পয়েন্টটি উদাহরণস্বরূপ, /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
।
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
export DISPLAY=:0.0
সিসিপি শুরু করার আগে ঠিক সেট করতে পারেন । যদি মেশিনটি মাথাছাড়া থাকে তবে আপনাকে ভার্চুয়াল ফ্রেমবফার বা কোনও কিছুতে একটি এক্সেসিওন শুরু করতে হবে, সেই সময়ে আপনার সম্ভবত অন্য একটি প্রোগ্রাম সন্ধান করা উচিত
gcp
বেশ শালীন তবে ডিবিইএস / এক্স প্রয়োজনীয়তা বিজোড়। আমি এসএসএইচ এর মাধ্যমে এসএসএই ফরওয়ার্ডিং ব্যবহার করে পরিচালনা করেছি: ssh -X user@host
এবং এটি আমাকে এটি চালানোর অনুমতি দিয়েছে।
আমি এই নির্ভুল উদ্দেশ্যে সিআরএল ব্যবহার করতে পেলাম। ম্যান পেজ সমর্থিত হিসাবে "ফাইল" প্রোটোকলটি তালিকাভুক্ত করে, তাই কেবল এটি কোনও ইউআরএল-এ অন্য যে কোনও প্রোটোকলের মতো ব্যবহার করুন:
curl -o destination FILE://source
গতি, অগ্রগতি, বাকি সময় এবং আরও অনেক কিছু - একটি পরিচিত বিন্যাসে।
pv
, এটি অনুমতিগুলি সংরক্ষণ করবে না।
যদিও এটি গতি প্রদর্শন করে না, একাধিক ফাইল অনুলিপি -v
করার সময়, cp
কমান্ডের বিকল্পটি আপনাকে অগ্রগতির তথ্য সরবরাহ করবে। যেমন
cp -rv old-directory new-directory
কার্নেল বেশিরভাগ ডেটা যেমন গতি, এবং প্রায়শই শতাংশের মতোও জানে। আধুনিক কার্নেলগুলি তাদের / 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)
...
pkill -USR1 dd
করতে চালানোর জন্য অন্য একটি টার্মিনালও ব্যবহার করতে পারেন dd
, অন্য বিকল্পটি watch -n 1 pkill -USR1 dd
এটি পর্যায়ক্রমে (প্রতি সেকেন্ডে) এর অগ্রগতি দেখানো হবে।
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)
যদিও 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
সিভি নামে একটি নতুন সরঞ্জাম রয়েছে যা চলমান কমান্ডের সাথে সম্পর্কিত যে কোনও বর্ণনাকারী খুঁজে পেতে পারে এবং অগ্রগতি এবং গতি প্রদর্শন করতে পারে: https://github.com/Xfennec/cv
cv -w
সমস্ত চলমান সিপি, এমভি ইত্যাদি ক্রিয়াকলাপের পরিসংখ্যানগুলি আউটপুট করে
watch cv -q
এমনকি আরও
cp
একটি ডিরেক্টরিকে পুনরাবৃত্তভাবে অনুলিপি করছে কি না।
যেমনটি অনেকে বলেছেন, সিপি এই কার্যকারিতাটি অন্তর্ভুক্ত করে না।
কেবল আমার 0.02 ডলার নিক্ষেপ করতে, আমি সাধারণত তুচ্ছ অনুলিপি পরিস্থিতিতে (যেমন না -R
) কি করি:
ফাইলটি কত বড় তা দেখুন এবং মনে রাখবেন
অনুলিপি শুরু করুন
অন্য একটি টার্মিনাল খুলুন
watch ls -lh DIR
ডিরেক্টরি যেখানে চালান সেখানে চালান
এটি আমাকে ন্যূনতম ঝামেলা সহ টার্গেট ফাইল আকারে আপডেট রাখতে পারে updated
কম তুচ্ছ পরিস্থিতিগুলির বিকল্প হিসাবে, যেমন পুনরাবৃত্তভাবে ডিরেক্টরিগুলি অনুলিপি করা, আপনি watch du -hs DIR
ডিআইআর আকারের সংক্ষিপ্তসার দেখতে ব্যবহার করতে পারেন। তবে ডু গণনা করতে দীর্ঘ সময় নিতে পারে এবং অনুলিপিটিও কমিয়ে দিতে পারে, তাই আপনি -n INTERVAL
দেখার জন্য যুক্তিটি ব্যবহার করতে চাইতে পারেন যাতে বাণিজ্য-বন্ধ গ্রহণযোগ্য।
আপডেট: আপনি ওয়াচ ডু ব্যবহার করে কমান্ড সহ ওয়াইল্ড কার্ড ব্যবহার করেন, উদাহরণস্বরূপ watch du -hs backup/*
, উদ্ধৃতি দিতে ভুলবেন না:
watch "du -hs backup/*"
অন্যথায় ওয়াইল্ড কার্ডগুলি কেবল একবার প্রসারিত হবে , যখন ঘড়িটি শুরু করা হয় তখন ডু নতুন ফাইল / সাব-ডিরেক্টরিতে তাকাবে না।
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
আরও দেখুন: আপনি কিভাবে ডিডির অগ্রগতি পর্যবেক্ষণ করবেন?
আপনার যদি rsync 3.1 বা উচ্চতর ( rsync --version
) থাকে, আপনি অনুমতি এবং মালিকানা সংরক্ষণের সময় ডিরেক্টরিগুলি, "নো ক্লোবার নন," পুনরুদ্ধার করতে এবং (সামগ্রীতে অগ্রগতির পরিবর্তে ফাইলের দ্বারা) কপি রেট, এবং অনুলিপি (সিপি -আরপিএন) কপি করতে পারেন ( খুব রুক্ষ) আনুমানিক সময়টি এর সাথে বাকি:
sudo rsync -a --info=progress2 --no-i-r /source /destination
নোট করুন যে sudo কেবল তখনই প্রয়োজন যখন আপনার নিজের ডিরেক্টরিতে নেই / ডিরেক্টরিগুলি নিয়ে ডিল করতে পারেন। এছাড়াও, ছাড়া --no-i-r
, শতাংশ অনুলিপি চলাকালীন কোনও সময়ে কম সংখ্যায় পুনরায় সেট করতে পারে। সম্ভবত আরএসসিএনসি-র সংস্করণগুলি তথ্য = অগ্রগতি 2 সহ নো-আইআর-এ ডিফল্ট হবে তবে এটি বর্তমান সংস্করণে 3.1.2-এ নেই।
আমি খুঁজে পেয়েছি যে ইতিমধ্যে ফাইল রয়েছে এমন কোনও ডিরেক্টরিতে অনুলিপি করার সময় অবশিষ্ট শতাংশ এবং সময় অতিমাত্রায় অতিরঞ্জিত হয় (যেমন আপনি যখন সাধারণত সিপি -এন "নো ক্লোবার" ব্যবহার করবেন না)।
শেল স্ক্রিপ্ট ব্যবহার করুন:
#!/bin/sh
cp_p()
{
strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
| awk '{
count += $NF
if (count % 10 == 0) {
percent = count / total_size * 100
printf "%3d%% [", percent
for (i=0;i<=percent;i++)
printf "="
printf ">"
for (i=percent;i<100;i++)
printf " "
printf "]\r"
}
}
END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
}
এটি দেখতে এইরকম হবে:
% cp_p /home/echox/foo.dat /home/echox/bar.dat
66% [===============================> ]
আপনি যা করতে চান তার উপর নির্ভর করে মিডনাইট কমান্ডার ( mc
) এর উত্তর হতে পারে। আমি অবাক হয়েছি এখনও এর উল্লেখ করা হয়নি।
একটি বিশাল ফাইল স্থানান্তর করার অগ্রগতি প্রদর্শন করতে পছন্দ করার মতো সরঞ্জামগুলি pv
বা rsync
ভাল, তবে এটি যখন পুরো ডিরেক্টরি / গাছগুলি অনুলিপি করার কথা আসে mc
তখন আকারটি গণনা করে এবং তারপরে প্রগতিটি খুব সুন্দরভাবে প্রদর্শন করে। বেশিরভাগ সিস্টেমে এটি বাক্সের বাইরেও উপলব্ধ।
বৈশিষ্ট্য সংরক্ষণের জন্য আরও একটি বিকল্প হতে পারে (যদি source
এটি কোনও ফোল্ডার হয় তবে এটি তৈরি করা হবে destination
)
tar -c source | pv -e -t -p -r | tar -C destination -x
আশা করি এটি কারও কাজে লাগতে পারে। স্থানান্তর সময় আনুমানিকভাবে অনুমান do -s source
করার জন্য এটি আগে থেকে এবং -s <size>
প্যারামিটার হিসাবে এটি পাস করার মাধ্যমে অর্জন করা যেতে পারে pv
।
-f -
অপ্রয়োজনীয়। tar
এর জন্য ডিফল্ট আউটপুট c
এবং ইনপুট x
হ'ল স্টডআউট এবং স্টিডিন।
নীচের গিট সংগ্রহস্থলে অগ্রগতি_বারের জন্য উত্স কোডটি পরীক্ষা করুন
https://github.com/Kiran-Bose/supreme
এছাড়াও কাস্টম বাশ স্ক্রিপ্ট প্যাকেজ সর্বোচ্চ ব্যবহার করে দেখুন
ডেবি ফাইলটি ডাউনলোড করুন এবং ডেবিয়ান ভিত্তিক বিতরণে ইনস্টল করুন বা উত্স ফাইলগুলি ডাউনলোড করুন, সংশোধন করুন এবং অন্যান্য ডিগ্রোদের জন্য ব্যবহার করুন
কার্যকারিতা ওভারভিউ
(1) অ্যাপ্লিকেশনগুলি খুলুন ---- ফায়ারফক্স ---- ক্যালকুলেটর ---- সেটিংস
(২) ফাইলগুলি পরিচালনা করুন ---- অনুসন্ধান ---- নেভিগেট করুন ---- দ্রুত অ্যাক্সেস
|----Select File(s)
|----Inverse Selection
|----Make directory
|----Make file
|----Open
|----Copy
|----Move
|----Delete
|----Rename
|----Send to Device
|----Properties
(3) ফোন পরিচালনা করুন ---- ফোন থেকে সরান / অনুলিপি করুন ---- ফোনে সরান / অনুলিপি করুন ---- ফোল্ডারগুলি সিঙ্ক করুন
(4) ইউএসবি পরিচালনা করুন ---- ইউএসবি থেকে সরান / অনুলিপি করুন ---- ইউএসবিতে সরান / অনুলিপি করুন
পিভি জানে কীভাবে ফাইলের বিবরণকারীদের পিড দেওয়া হয় তা সিপি বা অন্য কিছু হোক
ডকুমেন্টেশন থেকে:
(Linux only): Watching file descriptor 3 opened by another process 1234:
pv -d 1234:3
(Linux only): Watching all file descriptors used by process 1234:
pv -d 1234
উদাহরণ:
md5sum file &
[1] + 1271 suspended
pv -d 1271
417MiB 0:00:17 [12,1MiB/s] [============> ] 29% ETA 0:00:53
$ cp file.mov copy.mov &
[2] 3731
$ pv -d 3731
3:/media/windows/file.mov: 754MiB 0:00:04 [97,2MiB/s] [======================> ] 52% ETA 0:00:07
4:/media/windows/copy.mov: 754MiB 0:00:04 [97,3MiB/s] [ <=> ]
pv
অনুমতিগুলি ঠিক তেমনভাবে হ্যান্ডেল করে নাcp
... (একটি দ্রুত পরীক্ষার উপর ভিত্তি করে আমি চেষ্টা করেছি:pv
মৃত্যুদন্ড কার্যকর করার বিটটি অনুলিপিrsync
করিনি .. করেছে)