จะแสดงความคืบหน้าในการถ่ายโอนและความเร็วได้อย่างไรเมื่อทำการคัดลอกไฟล์ด้วย cp


คำตอบ:


249

แม้ว่า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) ในระบบของคุณ


*: บิตทางเทคนิค

มีข้อมูลสำคัญสามสตรีมในระบบที่คล้ายยูนิกซ์: stdout (เอาต์พุตมาตรฐาน), stderr (ข้อผิดพลาดมาตรฐาน) และ stdin (อินพุตมาตรฐาน) ทุกโปรแกรมมีทั้งหมดสามอย่างดังนั้นต้องพูด ตัว>ดำเนินการเปลี่ยนเส้นทางเปลี่ยนเส้นทางโปรแกรมไปยังไฟล์ ไม่มีข้อโต้แย้งตามที่คุณเห็นด้านบน>เปลี่ยนเส้นทางเอาต์พุตมาตรฐานของโปรแกรมไปยังไฟล์ 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

วิธีนี้จะเป็นการสงวนสิทธิ์ / ความเป็นเจ้าของในขณะที่แสดงความคืบหน้า


3
อาจหรืออาจจะไม่สำคัญ (ขึ้นอยู่กับสถานการณ์) แต่pvไม่จัดการสิทธิ์แบบเดียวกับที่cp... (ตามการทดสอบอย่างรวดเร็วหนึ่งที่ฉันพยายาม: pvไม่คัดลอกบิตดำเนินการข้าม .. rsyncได้
Peter .O

45
IMO: alias cp="rsync -avz"cp ล้าสมัยแล้ว
Marco Ceppi

11
หากคุณเป็นเหมือนฉันและลืมpvไปคุณสามารถสอดแนม/proc/PID of cp/fdและ/proc/PID of cp/fdinfoคิดออกความคืบหน้า (มันขึ้นอยู่กับคุณที่จะอนุมานความเร็ว.) updatedbฉันใช้เทคนิคนี้ในการชม
Thanatos

11
ใช่-zควรใช้กับสำเนาเครือข่ายเท่านั้น การบีบอัดและคลายการบีบอัดข้อมูลสำหรับการคัดลอกในเครื่องเป็นค่าใช้จ่ายที่แท้จริง
Matthew อ่าน

3
@MarcoCeppi เมื่อทำการคัดลอกไดเรกทอรีโดยrsyncไม่ต้องเพิ่มส่วนท้าย/ไปยังเส้นทางต้นทาง (หรือลบออกหากการทำ bash เสร็จสิ้นจะทำให้มันอยู่ตรงนั้นโดยอัตโนมัติ) มิฉะนั้นคุณจะได้รับผลลัพธ์ที่แตกต่างจากเมื่อใช้cp(หรือgcp)
Piotr Findeisen

185

ไม่มี ดูที่นี่เป็นสาเหตุ แม้ว่ามันจะทำมากกว่าที่คุณต้องการ แต่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)

4
มันใช้งานได้ดีใน Ubuntu ปัจจุบัน (14.10) นอกจากนี้ยังสนับสนุนการ-rตั้งค่าสถานะเพื่อ recurse ไดเรกทอรี มันสามารถใช้นามแฝงเป็นตัวทดแทนโดยตรงสำหรับ cp:alias cp="rsync -ah --progress"
rustyx

1
ทำงานได้ดีบน OS X พร้อมโบนัสในการใช้เครื่องมือที่มาพร้อมกับระบบ
Ivan X

3
ฉันชอบทางเลือกนี้ดีกว่า pv พิเศษเพราะ rsync เป็นส่วนหนึ่งของการติดตั้งมาตรฐาน
Joao Costa

1
@bartekbrak ขอบคุณสำหรับการแบ่งปัน ปัจจุบันฉันใช้งาน macOS 10.12.x ใช้เวอร์ชันภาษาฮิบรูของ rsync 3.1.2 และการใช้--progressทำให้หัวฉันหมุนได้ spin ดูการแสดงผลทั้งหมดในเทอร์มินัล ดังนั้นผู้ที่มาที่นี่จากการค้นหาคำหลักของ AOL rsync -ah --info=progress2 [source] [destination] นำเสนอผลลัพธ์ใน IMHO ที่มีสติมากกว่าเดิม
ipatch

2
น่าเสียดายที่ผลลัพธ์ไม่เป็นประโยชน์เมื่อคัดลอกไฟล์ขนาดเล็กจำนวนมาก
Raphael

89

หากคุณต้องการดูว่าไฟล์ของคุณถ่ายโอนอย่างถูกต้องคุณสามารถใช้gcpและgcpเหมือน cp แต่ตามค่าเริ่มต้นจะให้แถบความคืบหน้าเพื่อให้คุณสามารถดูสิ่งที่ถูกคัดลอก ในฐานะที่เป็นโปรแกรมบันทึกวิกิพีเดีย , gcpมีคุณสมบัติที่มีประโยชน์หลายอย่างเช่น

  • บ่งชี้ความก้าวหน้าในการถ่ายโอน
  • การคัดลอกอย่างต่อเนื่องเมื่อเกิดข้อผิดพลาด (ข้ามไปที่ไฟล์ถัดไป)
  • การบันทึกสถานะการคัดลอก: gcp จะบันทึกการกระทำทั้งหมดเพื่อให้สามารถทราบได้ว่าไฟล์ใดที่ถูกคัดลอกสำเร็จ
  • ชื่อ mangling เพื่อจัดการข้อ จำกัด ของระบบไฟล์เป้าหมาย (ตัวอย่างเช่นการลบอักขระที่เข้ากันไม่ได้ "*" หรือ "?" ใน FAT)

อย่างไรก็ตามแม้ว่าแถบความคืบหน้าจะถึง 100% เมื่อใช้เครื่องมือนี้คุณจะต้องรอจนกว่าเครื่องปลายทางของคุณจะปรากฏขึ้นอีกครั้งก่อนที่จะลบสื่อของคุณอย่างปลอดภัยเพื่อให้คุณมั่นใจได้ว่ากระบวนการถ่ายโอนเสร็จสิ้น

gcpใช้เพื่อคัดลอกไฟล์และมีตัวเลือกต่าง ๆ เช่น--preserveเพื่อให้สามารถเก็บรักษาแอตทริบิวต์และสิทธิ์ต่าง ๆ ไว้และ--recursiveคัดลอกไดเรกทอรีทั้งหมดได้ ข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกที่สามารถพบได้โดยการป้อนman gcpหรือโดยไปที่manpages อูบุนตูออนไลน์ การสอนยังมีอยู่ในเว็บไซต์นี้

ติดตั้งgcpจากที่เก็บด้วย

sudo apt-get install gcp

( หมายเหตุ : ใน Ubuntu 12.10 จุด automount ใหม่คือตัวอย่าง/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ครอบคลุมใน


4
มีข้อผิดพลาดกับมันผ่าน sshdbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
msa7

3
หากคุณมีจอแสดงผล X11 เปิดอยู่ในเครื่องคุณสามารถตั้งค่าexport DISPLAY=:0.0ก่อนเริ่ม gcp หากเครื่องไม่มีหัวคุณต้องเริ่ม xsession เป็น framebuffer เสมือนจริงหรือบางสิ่ง ณ จุดนั้นคุณน่าจะแค่มองหาโปรแกรมอื่น
user292067

2
gcpค่อนข้างดี แต่ข้อกำหนด DBUS / X นั้นแปลก ฉันจัดการสิ่งนี้ผ่าน SSH โดยใช้การส่งต่อ ssh: ssh -X user@hostและนั่นทำให้ฉันสามารถเรียกใช้
Oli

68

ฉันเลิกใช้ cURL เพื่อจุดประสงค์นี้ man page แสดงรายการโปรโตคอล "ไฟล์" ที่ได้รับการสนับสนุนดังนั้นใช้มันเหมือนกับโปรโตคอลอื่น ๆ ใน URL:

curl -o destination FILE://source

ความเร็วความคืบหน้าเวลาที่เหลือและอื่น ๆ - ทั้งหมดอยู่ในรูปแบบที่คุ้นเคย


1
สิ่งนี้ยอดเยี่ยมโดยเฉพาะอย่างยิ่งในสภาพแวดล้อมที่คุณไม่ได้รับอนุญาตให้ติดตั้งเครื่องมือใหม่

5
ยอดเยี่ยมนี่ต้องเป็นการแฮ็คที่ต้องรู้!
ionreflex

คำตอบที่ดี! ฉลาด!
9301293

เรื่องนี้มีข้อเสียเปรียบเช่นเดียวกับpvที่มันจะไม่บันทึกสิทธิ์
Ploni

1
หวาน! มีวิธีใดบ้างที่จะทำให้มันใช้งานได้กับไดเรกทอรี
Joseph Rajeev Motha

28

แม้ว่ามันจะไม่แสดงความเร็ว แต่เมื่อทำการคัดลอกหลายไฟล์-vตัวเลือกในcpคำสั่งจะให้ข้อมูลความคืบหน้าแก่คุณ เช่น

cp -rv old-directory new-directory

10
ข้อมูลความคืบหน้า? นี่เป็นเพียงการส่งออกอย่างละเอียด เพื่อให้ข้อมูลความคืบหน้าอย่างน้อยที่สุดคุณจะต้องมีจำนวนไฟล์หรือแม้กระทั่งไฟล์ที่จะต้องคัดลอก
Julian F. Weinert

มันแสดงไฟล์ที่เปิดอยู่ซึ่งอาจเพียงพอในกรณีที่มีความต้องการน้อยกว่า
Gringo Suave

20

เคอร์เนลรู้ข้อมูลส่วนใหญ่เช่นความเร็วและมักจะเป็นเปอร์เซ็นต์ เมล็ดพันธุ์ที่ทันสมัยเปิดเผยสิ่งนี้ผ่านระบบไฟล์ / proc ของพวกเขา

showpeed จาก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)
...

ทำได้ดีนี่. มันทำงานอย่างไรร้อยละอย่างไร ฉันเดาเฉพาะกรณีที่ไฟล์เปิดเป็นแบบอ่านอย่างเดียวเท่านั้น? และมันอาจจะไม่ทำงานในกรณีที่มีการเข้าถึงกระจัดกระจาย
j_kubik

1
ในกรณีนี้คุณยังสามารถใช้เทอร์มินัลอื่นเพื่อเรียกใช้pkill -USR1 ddเพื่อddแสดงสถานะของมันตัวเลือกอื่นจะwatch -n 1 pkill -USR1 ddทำให้มันแสดงความคืบหน้าเป็นระยะ (ทุกวินาที)
Yaron

ขวา. เครื่องมือหลายอย่างมีวิธีในตัวเพื่อรายงานสถิติเมื่อเวลาผ่านไป ววไม่มีข้อยกเว้น การนำไปใช้ที่ทันสมัยมีตัวเลือก status = progess Showspeed เป็นสไตล์ยูนิกซ์แบบคลาสสิก "เครื่องมือเดียวสำหรับจุดประสงค์เดียว" - เหมือนกับ pv แต่มันมี usecases ที่แตกต่างกัน: ลองนึกถึงการปั๊มไฟล์ผ่าน ghostscript หรือคุณต้องการรู้จัก ETA สำหรับ cp หรือ tar ที่กำลังดำเนินการอยู่ อาจทำได้ 95% หลังจากผ่านไปสองสามชั่วโมงและคุณอาจไม่ต้องการรีสตาร์ทเพื่อเพิ่ม pv ... การเข้าถึงที่กระจัดกระจายจะทำงานได้ไม่ดี แสดงตัวอย่างความเร็วเพียงเพื่อค้นหาตำแหน่ง
Jürgen Weigert

18

มีเครื่องมือที่เรียกว่า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)

12

ในขณะที่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


11

มีเครื่องมือใหม่ที่เรียกว่า cv ที่สามารถค้นหา descriptor ใด ๆ ที่เกี่ยวข้องกับคำสั่งที่รันอยู่และแสดงความคืบหน้าและความเร็ว: https://github.com/Xfennec/cv

cv -w

แสดงผลสถิติสำหรับการดำเนินการ cp, mv ฯลฯ ทั้งหมด


watch cv -qแม้จะเป็นผู้
ชนะ

มันแสดงความคืบหน้าสำหรับแต่ละไฟล์เท่านั้นมันจะรู้ว่า a cpคือการคัดลอกไดเรกทอรีซ้ำหรือไม่
Flimm

1
สงครามเปลี่ยนชื่อเป็นความคืบหน้า เครื่องมือที่ยอดเยี่ยม!
เซบาสเตียน

7

อย่างที่หลายคนบอกว่า cp ไม่รวมฟังก์ชั่นนี้

เพียงแค่โยน $ 0.02 ของฉันสิ่งที่ฉันมักจะทำกับสถานการณ์การคัดลอกเล็กน้อย (เช่นไม่มี-R):

  1. ดูว่าไฟล์มีขนาดใหญ่และจำได้

  2. เริ่มการคัดลอก

  3. เปิดเทอร์มินัลอื่น

  4. ทำงานwatch ls -lh DIRในไดเรกทอรีที่เป้าหมายอยู่

สิ่งนี้ทำให้ฉันได้รับการปรับปรุงตามขนาดไฟล์เป้าหมายโดยมีความยุ่งยากน้อยที่สุด

เป็นทางเลือกสำหรับสถานการณ์ที่ไม่สำคัญเช่นการคัดลอกไดเรกทอรีซ้ำคุณสามารถใช้watch du -hs DIRเพื่อดูข้อมูลสรุปขนาด DIR อย่างไรก็ตาม du อาจใช้เวลานานในการคำนวณและอาจทำให้การคัดลอกช้าลงดังนั้นคุณอาจต้องการใช้การ-n INTERVALโต้แย้งเพื่อดูว่าการแลกเปลี่ยนเป็นที่ยอมรับ

อัปเดต:ในกรณีที่คุณใช้ wild-cards พร้อมคำสั่งที่ใช้กับ watch du เช่นwatch du -hs backup/*อย่าลืมอ้างอิง:

watch "du -hs backup/*"

ไม่เช่นนั้นไวด์การ์ดจะขยายได้เพียงครั้งเดียวเมื่อเริ่มต้นการดูดังนั้น du จะไม่ดูไฟล์ / ไดเรกทอรีย่อยใหม่


ไม่ได้คำตอบส่วน "ความเร็ว" แต่ ...
Alois Mahdal

7

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

ดูเพิ่มเติม: คุณติดตามความคืบหน้าของววได้อย่างไร?


1
คุณหมายถึง: stdout เป็นสตรีมของตัวละครและลำดับหนี vt100 ที่ทำให้เทอร์มินัลของคุณแสดงบรรทัดที่อัปเดตเป็นระยะ;) stdout เป็นสตรีมของไบต์เสมอและไม่มีอะไรเกี่ยวข้องกับวิธีการแสดง (ยกเว้นว่าแอปพลิเคชันสามารถรู้ได้ว่ามีการเชื่อมต่อกับเทอร์มินัลหรือไม่ ... )
masterxilo

@masterxilo newbs จะไม่สนใจผู้เชี่ยวชาญจะรู้ ;-) hehe
Ciro Santilli 新疆改造中心中心法轮功六四事件

ฉันคิดว่ามันดีเสมอที่จะพูดถึงสิ่งที่พวกเขาเป็นอยู่บางทีอาจจะทิ้งรายละเอียดบางอย่าง แต่อย่าทำให้ผู้อ่านของคุณสร้างแบบจำลองทางจิตที่ผิด หากคุณพูดว่า "stdout เป็นบรรทัด (อัพเดตเป็นระยะ)" ดูเหมือนว่าคุณกำลังพูดว่า stdout เป็นบล็อกของหน่วยความจำที่ไม่แน่นอนซึ่งไม่ได้เป็นเช่นนั้น นี่เป็นสิ่งสำคัญที่ต้องรู้แม้กระทั่งมือใหม่
masterxilo

6

หากคุณมี rsync 3.1 หรือสูงกว่า ( rsync --version) คุณสามารถคัดลอก (cp -Rpn) ในขณะที่รักษาสิทธิ์และความเป็นเจ้าของ, เรียกคืนไดเรกทอรี, "ไม่มีการปิดบัง" และแสดงความคืบหน้าโดยรวม (แทนความคืบหน้าโดยไฟล์) อัตราการคัดลอกและ ( หยาบมาก) เวลาที่เหลือโดยประมาณด้วย:

sudo rsync -a --info=progress2 --no-i-r /source /destination

โปรดทราบว่าจำเป็นต้องใช้ sudo เฉพาะเมื่อจัดการกับไดเรกทอรี / ไฟล์ที่คุณไม่ได้เป็นเจ้าของ นอกจากนี้หากไม่มี--no-i-rเปอร์เซ็นต์อาจรีเซ็ตเป็นตัวเลขที่ต่ำกว่าในบางช่วงระหว่างการคัดลอก บางที rsync รุ่นที่ใหม่กว่าอาจมีค่าเริ่มต้นเป็น no-ir ด้วย info = progress2 แต่มันไม่ได้อยู่ในเวอร์ชันปัจจุบัน 3.1.2

ฉันพบว่าเปอร์เซ็นต์และเวลาที่เหลืออยู่นั้นเกินความคาดหมายอย่างมากเมื่อคัดลอกไปยังไดเรกทอรีที่มีไฟล์อยู่แล้ว (เช่น. เช่นเมื่อคุณมักจะใช้ cp -n "no clobber")


3

ใช้เชลล์สคริปต์:

#!/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% [===============================>                      ]

แหล่ง


3

ผู้บัญชาการ Midnight ( mc) อาจเป็นคำตอบทั้งนี้ขึ้นอยู่กับสิ่งที่คุณต้องการทำ ฉันประหลาดใจที่ยังไม่ได้กล่าวถึง

เครื่องมือที่ชอบpvหรือrsyncดีในการแสดงความคืบหน้าของการถ่ายโอนไฟล์ขนาดใหญ่เพียงไฟล์เดียว แต่เมื่อมันมาถึงการคัดลอกทั้งไดเร็กตอรี่ / ทรีให้mcคำนวณขนาดแล้วแสดงความคืบหน้าอย่างมาก นอกจากนี้ยังมีให้ใช้งานได้ทันทีในระบบส่วนใหญ่


2
"มันมีให้บริการนอกกรอบในระบบส่วนใหญ่" ... ไม่ได้ติดตั้งบน Ubuntu เป็นค่าเริ่มต้น
muru

1

อีกหนึ่งตัวเลือกในการรักษาแอตทริบิวต์อาจเป็น (ถ้าsourceเป็นโฟลเดอร์มันจะถูกสร้างขึ้นในdestination)

tar -c source | pv -e -t -p -r | tar -C destination  -x

หวังว่ามันจะเป็นประโยชน์กับใครบางคน จะมีเวลาการโอนประมาณนี้สามารถทำได้โดยการทำdo -s sourceล่วงหน้าและผ่านมันเป็นพารามิเตอร์-s <size>pv


-f -ซ้ำซ้อน tarเอาต์พุตเริ่มต้นสำหรับcและอินพุตสำหรับxคือ stdout และ stdin
muru

มันอาจขึ้นอยู่กับเวอร์ชั่น OS / tar หรือไม่? ฉันรู้ว่ามันเป็นเว็บไซต์ของ Ubuntu แต่นี่อาจเป็นประโยชน์สำหรับเจ้าของระบบปฏิบัติการอื่น ๆ เช่น macOS
ciekawy

1
Nope การใช้งานที่มีสติทั้งหมด (รวมถึง tar ของ libarchive ซึ่ง macOS ใช้) มีพฤติกรรมนี้
muru

เพิ่งยืนยันกับ macos และข้อเสนอแนะของคุณใช้ได้อย่างสมบูรณ์ - ฉันได้อัปเดตคำตอบแล้ว ขอบคุณ!
ciekawy

0

คุณสามารถคัดลอกใช้โปรแกรมใดก็ได้ ในเวลาเดียวกันคุณสามารถเริ่มต้นsudo iotopและดูความเร็วในการอ่าน / เขียนดิสก์ได้โดยไม่ต้องดำเนินการใด ๆ


0

ตรวจสอบซอร์สโค้ดสำหรับ progress_bar ในที่เก็บ git ด้านล่าง

https://github.com/Kiran-Bose/supreme

ลองใช้แพคเกจสคริปต์ทุบตีที่กำหนดเองสูงสุด

ดาวน์โหลดไฟล์ deb และติดตั้งเป็นการกระจายแบบเดเบียนหรือดาวน์โหลดไฟล์ต้นฉบับแก้ไขและใช้สำหรับ distros อื่น ๆ

ภาพรวมการทำงาน

(1) เปิดแอป ---- Firefox ---- เครื่องคิดเลข ---- การตั้งค่า

(2) จัดการไฟล์ ---- ค้นหา ---- นำทาง ---- เข้าถึงด่วน

            |----Select File(s)
            |----Inverse Selection
            |----Make directory
            |----Make file
                                          |----Open
                                          |----Copy
                                          |----Move
                                          |----Delete
                                          |----Rename
                                          |----Send to Device
                                          |----Properties

(3) จัดการโทรศัพท์ ---- ย้าย / คัดลอกจากโทรศัพท์ ---- ย้าย / คัดลอกไปยังโทรศัพท์ ---- ซิงค์โฟลเดอร์

(4) จัดการ USB ---- ย้าย / คัดลอกจาก USB ---- ย้าย / คัดลอกไปยัง USB


0

pv รู้วิธีดูไฟล์ descriptors ที่ได้รับ 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] [     <=>                                                                   ] 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.