अन्यथा, क्या कोई वैकल्पिक कमांड लाइन उपयोगिता है जो इसे प्राप्त कर सकती है?
अन्यथा, क्या कोई वैकल्पिक कमांड लाइन उपयोगिता है जो इसे प्राप्त कर सकती है?
जवाबों:
हालांकि cp
यह कार्यक्षमता नहीं मिली है, आप ऐसा करने के pv
लिए उपयोग कर सकते हैं :
pv my_big_file > backup/my_big_file
नोट: यह विधि फ़ाइल की अनुमति और स्वामित्व खो देगी। इस तरह से कॉपी की गई फ़ाइलों में वही अनुमतियाँ होंगी जैसे कि आपने उन्हें स्वयं बनाया होगा और आप से संबंधित होंगी।
इस उदाहरण में, pv
मूल रूप से फ़ाइल को stdout * में आउटपुट करता है, जिसे आप >
ऑपरेटर का उपयोग करके किसी फ़ाइल में रीडायरेक्ट करते हैं । इसके साथ ही, यह टर्मिनल की प्रगति के बारे में जानकारी प्रिंट करता है जब आप ऐसा करते हैं।
यह है जो ऐसा लग रहा है:
stefano@ubuntu:~/Data$ pv my_big_file > backup/my_big_file
138MB 0:00:01 [73.3MB/s] [=================================>] 100%
आपको अपने सिस्टम पर pv (वैकल्पिक रूप से, टाइप sudo apt-get install pv
) स्थापित करने की आवश्यकता हो सकती है।
*: तकनीकी बिट
यूनिक्स जैसी प्रणाली में डेटा की तीन महत्वपूर्ण धाराएँ हैं: स्टडआउट (मानक आउटपुट), स्टडर (मानक त्रुटि) और स्टडिन (मानक इनपुट)। हर कार्यक्रम में तीनों होते हैं, इसलिए बोलने के लिए। >
पुनर्निर्देशन ऑपरेटर एक फाइल करने के लिए कार्यक्रम उत्पादन पुनर्निर्देश। तर्कों के बिना, जैसा कि आप ऊपर देखते हैं, >
किसी प्रोग्राम के मानक आउटपुट को किसी फ़ाइल में रीडायरेक्ट करता है। cp
मूल रूप से कुछ भी कट्टर नहीं होता है
cat source > destination
(जहां cat
सिर्फ एक फ़ाइल पढ़ता है और इसे stdout में प्रिंट करता है)। pv
बिल्ली की तरह है, लेकिन अगर आप इसे कहीं और आउटपुट स्ट्रीम पुनर्निर्देशित करते हैं, तो यह प्रगति सूचना को इसके बजाय stdout में प्रिंट करेगा।
man pv
इसके बारे में अधिक जानने के लिए एक नज़र डालें ।
एक अन्य विकल्प, जैसा कि DoR इस उत्तर में बताता है , इसके बजाय rsync का उपयोग करना है:
$ 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"
cp पुराना है।
pv
, आप में ताक-झांक जा सकते हैं /proc/PID of cp/fd
और /proc/PID of cp/fdinfo
प्रगति यह पता लगाने की। (यह आपको गति का अनुमान लगाने के लिए है।) मैं देखने के लिए इस तकनीक का उपयोग करता हूं updatedb
।
-z
शायद केवल नेटवर्क प्रतियों के लिए उपयोग किया जाना चाहिए; एक स्थानीय प्रति के लिए डेटा को संपीड़ित और विघटित करना शुद्ध ओवरहेड है।
rsync
लिए सुनिश्चित करें कि /
स्रोत पथ में अनुगामी जोड़ना नहीं है (या यदि bash पूरा होने पर इसे स्वचालित रूप से वहां रखा जाए तो हटा दें)। अन्यथा आपको 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
निर्देशिकाओं की पुनरावृत्ति करने के लिए ध्वज का भी समर्थन करता है । इसे cp के प्रत्यक्ष प्रतिस्थापन के रूप में भी alias cp="rsync -ah --progress"
--progress
अपने हेड स्पिन का उपयोग करके टर्मिनल में सभी आउटपुट डिस्प्ले देख रहा हूं। तो AOL कीवर्ड खोजों से यहां आने वाले, rsync -ah --info=progress2 [source] [destination]
आउटपुट को थोड़ा और अधिक तरीके से IMHO तरीके से प्रस्तुत करते हैं।
यदि आप यह देखना चाहते हैं कि क्या आपकी फाइलें सही तरीके से स्थानांतरित हो रही हैं, तो आप उपयोग कर सकते हैं gcp
और gcp
cp की तरह हैं, लेकिन डिफ़ॉल्ट रूप से आपको एक प्रगति बार देता है ताकि आप देख सकें कि क्या कॉपी किया जा रहा है। कार्यक्रम के विकी नोट्स के रूप में , gcp
कई उपयोगी विशेषताएं हैं जैसे कि
- स्थानांतरण प्रगति संकेत
- त्रुटि पर निरंतर प्रतिलिपि (अगली फ़ाइल पर जाएं)
- कॉपी स्टेटस लॉगिंग: gcp अपने सभी कार्यों को लॉग करता है ताकि यह पता चल सके कि किन फाइलों को सफलतापूर्वक कॉपी किया गया है
- FATAT पर लक्ष्य फ़ाइल सिस्टम सीमाओं को संभालने के लिए नामकरण (उदाहरण के लिए असंगत वर्ण "*" या "?"
हालाँकि, जब टूल का उपयोग करते समय प्रगति बार 100% तक पहुंच गया है, तो आपको तब तक इंतजार करना होगा जब तक कि आपका टर्मिनल प्रॉम्प्ट आपके मीडिया को सुरक्षित रूप से हटाने से पहले फिर से प्रकट न हो जाए ताकि आप यह सुनिश्चित कर सकें कि स्थानांतरण प्रक्रिया सफलतापूर्वक समाप्त हो गई है।
gcp
का उपयोग फ़ाइलों को कॉपी करने के लिए किया जाता है और इस तरह के विकल्प होते हैं --preserve
ताकि विभिन्न विशेषताओं और अनुमतियों को संरक्षित किया जा सके और --recursive
ताकि पूरी निर्देशिका को कॉपी किया जा सके। इसके विकल्पों के बारे में अधिक जानकारी उबन्टु मानपेज मेंman gcp
जाकर दर्ज करके या ऑनलाइन प्राप्त की जा सकती है । इस साइट पर एक ट्यूटोरियल भी उपलब्ध है ।
के gcp
साथ रिपॉजिटरी से स्थापित करें
sudo apt-get install gcp
( नोट : उबंटू 12.10 में नया ऑटोमाउंट प्वाइंट है, उदाहरण के लिए, /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 शुरू करने से पहले सेट कर सकते हैं । यदि मशीन हेडलेस है, तो आपको एक वर्चुअल फ्रेमबफ़र या किसी चीज़ में एक xsession शुरू करना होगा, उस बिंदु पर आपको शायद किसी अन्य प्रोग्राम की तलाश करनी चाहिए
gcp
बहुत सभ्य है, लेकिन DBUS / X आवश्यकता विषम है। मैंने SSH को ssh अग्रेषण का उपयोग करके इसे संभाला: ssh -X user@host
और उसने मुझे इसे चलाने की अनुमति दी।
मुझे इस सटीक उद्देश्य के लिए CURL का उपयोग करने से एक किक मिलती है। मैन पेज "FILE" प्रोटोकॉल को समर्थित के रूप में सूचीबद्ध करता है, इसलिए इसे URL में किसी भी अन्य प्रोटोकॉल की तरह उपयोग करें:
curl -o destination FILE://source
गति, प्रगति, शेष समय, और अधिक - सभी एक परिचित प्रारूप में।
हालांकि यह गति प्रदर्शित नहीं करता है, कई फ़ाइलों की प्रतिलिपि बनाते समय, कमांड का -v
विकल्प cp
आपको प्रगति जानकारी प्रदान करेगा। जैसे
cp -rv old-directory new-directory
कर्नेल अधिकांश डेटा जैसे गति, और अक्सर प्रतिशत भी जानता है। आधुनिक गुठली अपने / खरीद फाइल सिस्टम के माध्यम से इसे उजागर करती है।
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
Cv नामक एक नया टूल है जो एक रनिंग कमांड से संबंधित किसी भी डिस्क्रिप्टर को पा सकता है और प्रगति और गति दिखा सकता है: https://github.com/Xfennec/cv
cv -w
सभी चल रहे cp, mv आदि परिचालनों के लिए आँकड़े को आउटपुट करता है
watch cv -q
यहाँ तक कि neater
cp
एक निर्देशिका की पुनरावृत्ति कॉपी कर रहा है या नहीं।
जैसा कि कई ने कहा, cp में यह कार्यक्षमता शामिल नहीं है।
बस अपना $ 0.02 फेंकने के लिए, जो मैं आमतौर पर तुच्छ नकल स्थितियों (यानी नहीं -R
) के साथ करता हूं :
देखें कि फ़ाइल कितनी बड़ी है और याद रखें
नकल शुरू करो
एक और टर्मिनल खोलें
watch ls -lh DIR
उस निर्देशिका पर चलाएँ जहाँ लक्ष्य है
यह मुझे कम से कम परेशानी के साथ, लक्षित फ़ाइल आकार पर अद्यतन रख सकता है।
कम तुच्छ स्थितियों के लिए एक विकल्प के रूप में, उदाहरण के लिए पुनरावर्ती प्रतिलिपि बनाने, आप watch du -hs DIR
DIR आकार का सारांश देखने के लिए उपयोग कर सकते हैं । हालाँकि du को गणना करने में लंबा समय लग सकता है और यहां तक कि प्रतिलिपि को धीमा भी कर सकता है, इसलिए आप -n INTERVAL
देखने के लिए तर्क का उपयोग करना चाह सकते हैं ताकि ट्रेड-ऑफ स्वीकार्य हो।
अद्यतन: यदि आप वॉच डु के साथ उपयोग किए जाने वाले कमांड के साथ वाइल्ड-कार्ड का उपयोग करते हैं, जैसे watch du -hs backup/*
, तो उद्धृत करना न भूलें:
watch "du -hs backup/*"
अन्यथा वाइल्ड-कार्ड्स का विस्तार केवल एक बार किया जाएगा , जब वॉच शुरू होगी तो डु नई फ़ाइलों / उपनिर्देशिकाओं को नहीं देखेगा।
dd status=progress
GNU Coreutils 8.24+ (Ubuntu 16.04) में जोड़ा गया विकल्प:
dd if=src of=dst status=progress
टर्मिनल प्रकार की एक पंक्ति दिखाता है:
462858752 bytes (463 MB, 441 MiB) copied, 38 s, 12,2 MB/s
यह भी देखें: आप dd की प्रगति की निगरानी कैसे करते हैं?
यदि आपके पास rsync 3.1 या उच्चतर ( rsync --version
) है, तो आप अनुमतियों और स्वामित्व को संरक्षित करते हुए कॉपी कर सकते हैं (cp -Rpn), निर्देशिकाओं की पुनरावृत्ति करते हैं, "कोई क्लोबर्स नहीं", और समग्र प्रगति (केवल फ़ाइल द्वारा प्रगति के बजाय), प्रतिलिपि दर और ( बहुत कठिन) अनुमानित समय शेष:
sudo rsync -a --info=progress2 --no-i-r /source /destination
ध्यान दें कि sudo को केवल निर्देशिकाओं / फ़ाइलों से निपटने की आवश्यकता होती है, जो आपके पास नहीं हैं। इसके अलावा, --no-i-r
प्रतिलिपि के दौरान कुछ बिंदु पर प्रतिशत कम संख्या पर रीसेट हो सकता है। शायद rsync के बाद के संस्करण जानकारी = प्रगति 2 के साथ नो-इर के लिए डिफ़ॉल्ट होंगे, लेकिन यह 3.1.2 के वर्तमान संस्करण में नहीं है।
मैंने पाया है कि प्रतिशत और शेष समय को उस निर्देशिका में कॉपी करते समय अत्यधिक कम कर दिया जाता है जिसमें पहले से ही फाइलें होती हैं (जैसे कि जब आप आमतौर पर cp -n "no clobber" का उपयोग करेंगे)।
एक शेल स्क्रिप्ट का उपयोग करें:
#!/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) ओपन ऐप्स ---- फ़ायरफ़ॉक्स ---- कैलकुलेटर ---- सेटिंग्स
(2) फ़ाइलें प्रबंधित करें ---- खोजें ---- नेविगेट करें ---- त्वरित पहुँच
|----Select File(s)
|----Inverse Selection
|----Make directory
|----Make file
|----Open
|----Copy
|----Move
|----Delete
|----Rename
|----Send to Device
|----Properties
(3) फ़ोन को प्रबंधित करें ---- फ़ोन से मूव / कॉपी करें ---- फ़ोन पर ले जाएँ / कॉपी करें - सिंक फ़ोल्डर
(4) USB ----- मूव / कॉपी से USB ---- मूव / कॉपी USB पर करें
pv जानता है कि फ़ाइल डिस्क्रिप्टर देखने के लिए कैसे एक pid दिया जाता है, चाहे वह cp हो या कुछ और
प्रलेखन से:
(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
किया था ..