Bagaimana cara menunjukkan kemajuan dan kecepatan transfer saat menyalin file dengan cp?

Jika tidak, apakah ada utilitas baris perintah alternatif yang dapat mencapai ini?

Sementara cp belum punya fungsi ini, Anda dapat menggunakan pv untuk melakukan hal ini:

pv my_big_file > backup/my_big_file

Catatan: metode ini akan kehilangan izin dan kepemilikan file. File yang disalin dengan cara ini akan memiliki izin yang sama seperti jika Anda membuatnya sendiri dan akan menjadi milik anda.

Dalam contoh ini, pv pada dasarnya hanya mengeluarkan file ke stdout*, yang Anda alihkan ke file menggunakan > operator. Secara bersamaan, mencetak informasi tentang kemajuan ke terminal ketika anda melakukan itu.

Ini adalah apa yang tampak seperti:

stefano@ubuntu:~/Data$ pv my_big_file > backup/my_big_file 138MB 0:00:01 [73.3MB/s] [=================================>] 100% 

Anda mungkin perlu & nbsp;Instal pv (atau, ketik sudo apt-get install pv) pada sistem Anda.


*: Bit teknis

Ada tiga aliran data penting dalam sistem mirip unix: stdout (output standar), stderr (kesalahan standar) dan stdin (input standar). Setiap program memiliki ketiganya, jadi untuk berbicara. The > operator pengalihan pengalihan output program ke file. Tanpa argumen, seperti yang Anda lihat di atas, > pengalihan program output standar ke file. cp pada dasarnya tidak ada yang lebih menarik daripada

cat source > destination

(dimana cat hanya membaca file dan mencetaknya ke stdout). pv sama seperti cat, tetapi jika Anda mengalihkan aliran keluarannya ke tempat lain, itu akan mencetak informasi kemajuan ke stdout sebagai gantinya.

Lihatlah man pv untuk mempelajari lebih lanjut tentang hal itu.


Pilihan lain, seperti alt textOleh menyarankan dalam jawaban ini, adalah menggunakan rsync sebagai gantinya:

$ rsync -ah --progress source-file destination-filesending incremental file listsource-file        621.22M  57%  283.86MB/s    0:00:01

Ini akan mempertahankan izin/kepemilikan file sambil menunjukkan kemajuan.

Tidak ada. Lihat di sini seperti Mengapa. Meskipun tidak lebih dari yang Anda butuhkan, rsync memiliki --progress parameter. The -a akan tetap izin, dll, dan -h akan dapat dibaca manusia.

rsync -ah --progress source destination

Outputnya akan terlihat seperti ini:

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)

Jika Anda ingin melihat apakah file Anda mentransfer dengan benar Anda bisa menggunakan gcp dan gcp seperti cp tetapi secara default memberi Anda bilah kemajuan sehingga anda dapat melihat apa yang sedang disalin. Sebagai program catatan wiki, gcp memiliki beberapa fitur yang berguna seperti

  • indikasi perkembangan transfer
  • penyalinan terus menerus pada kesalahan (lewati ke file berikutnya)
  • salin pencatatan status: gcp mencatat semua tindakannya sehingga memungkinkan untuk mengetahui file mana yang telah berhasil disalin
  • beri nama mangling untuk menangani batasan sistem file target (misalnya penghapusan karakter yang tidak kompatibel " * "atau"?"on FAT)

Namun, bahkan ketika bilah kemajuan telah mencapai 100% saat menggunakan alat ini, Anda harus menunggu hingga prompt terminal Anda muncul kembali sebelum menghapus media Anda dengan aman sehingga anda dapat memastikan bahwa proses transfer telah berhasil selesai.

gcp digunakan untuk menyalin file dan memiliki opsi seperti --preserve sehingga berbagai atribut dan izin dapat dipertahankan dan --recursive sehingga seluruh direktori dapat disalin. Informasi lebih lanjut tentang opsinya dapat ditemukan dengan memasukkan man gcp atau dengan pergi ke Ubuntu manpages online. Tutorial juga tersedia di situs ini.

Instal gcp dari repositori dengan

sudo apt-get install gcp

(Catatan: di Ubuntu 12.10 titik automount baru, misalnya, /media/user/usbdisk)

Anda dapat menyalin file ke media Anda dengan memasukkan

gcp /home/mike/file.mp4 /media/usb

dan menyalin folder ke media Anda dengan

gcp -rv ~/Podcasts /media/Mik2

Contoh output dari gcp dengan progress bar:

gcp ~/Videos_incIplayer/mars.flv /media/Mik2Copying 168.57 MiB 100% |########################################################|   7.98 M/s Time: 00:00:22

Anda tentu saja dapat menentukan beberapa file atau folder untuk disalin ke disk Anda, dan ada banyak opsi lain yang tercakup dalam man gcp.

Saya mendapatkan menendang keluar dari menggunakan cURL untuk tujuan yang tepat ini. Halaman manual mencantumkan protokol "FILE" sebagai didukung, jadi gunakan saja seperti protokol lain di URL:

curl -o destination FILE://source

Kecepatan, kemajuan, waktu yang tersisa, dan banyak lagi-semua dalam format akrab.

Ada alat yang disebut progress dalam repositori yang mampu memeriksa berbagai perintah yang berbeda dan menampilkan info kemajuan bagi mereka.

Instal menggunakan perintah

sudo apt-get install progress

Alat ini dapat digunakan seperti itu:

cp bigfile newfile & progress -mp $!

Keluaran:

[11471] cp /media/Backup/Downloads/FILENAME.file         29.9% (24.2 MiB / 16 MiB)

Meskipun tidak menampilkan kecepatan, saat menyalin banyak file, file -v pilihan untuk cp perintah akan memberi Anda info kemajuan. misalnya.

cp -rv old-directory new-directory

Kernel mengetahui sebagian besar data seperti kecepatan, dan seringkali juga persentase. Kernel modern mengekspos ini melalui filesystem / proc mereka.

showspeed dari https://github.com/jnweiger/showspeed menggunakan informasi tersebut. Hal ini dapat melampirkan program yang sudah berjalan dan memberikan update berkala seperti ini:

$ dd if=bigfile of=/tmp/otherbigfile &$ showspeed dddd looks like a process name. pid=4417 matches av0=dd.p/4417/fd/0r /home/jw/bigfile 113MB/s (12%, 2.3GB)  9m:35p/4417/fd/1w /tmp/otherbigfile 182MB/s (2.6GB)p/4417/fd/0r /home/jw/bigfile 285MB/s (15%, 3.0GB)  8m:08p/4417/fd/0r /home/jw/bigfile 115MB/s (16%, 3.2GB)  8m:01p/4417/fd/0r /home/jw/bigfile 107MB/s (17%, 3.4GB)  7m:39p/4417/fd/1w /tmp/otherbigfile 104MB/s (3.5GB)p/4417/fd/0r /home/jw/bigfile 139MB/s (19%, 3.7GB)  7m:37p/4417/fd/0r /home/jw/bigfile 116MB/s (20%, 3.9GB)  7m:18p/4417/fd/1w /tmp/otherbigfile  67MB/s (4.0GB)p/4417/fd/1w /tmp/otherbigfile 100MB/s (4.1GB)...

Sementara pv dapat menangani Lokal cp tugas, menggunakan dd dengan pv dapat menangani kedua lokal (cp) dan Jarak Jauh (scp) tugas.

dd if=path/to/source.mkv | pv | dd of=path/to/dest.mkv

Harap pastikan path/to/dest.mkv keluar oleh touch path/to/dest.mkv

Hal ini dapat menunjukkan kemajuan, tetapi jika Anda ingin informasi persentase,

dd if=path/to/source.mkv | pv -s 100M | dd of=path/to/dest.mkv

Ganti 100M di atas dengan ukuran sebenarnya dari file sumber Anda.

Di sinilah bagian terpencil

Sementara scp hampir tidak dapat menunjukkan kemajuan saat ini, menggunakan dd dengan pv adalah sepotong kue.

ssh onemach@myotherhost dd if=path/to/source.mkv | pv -s 100M | dd of=path/to/dest.mkv

Jika Anda memiliki rsync 3.1 atau lebih tinggi (rsync --version), Anda dapat menyalin (cp-Rpn) sambil mempertahankan izin dan kepemilikan, mengulang direktori, "tidak ada clobber," dan menampilkan kemajuan keseluruhan (bukan hanya kemajuan dengan file), tingkat penyalinan, dan (sangat kasar) perkiraan waktu yang tersisa dengan:

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

Perhatikan bahwa sudo hanya diperlukan jika berurusan dengan direktori/file yang tidak anda miliki. Juga, tanpa --no-i-r, persentase dapat diatur ulang ke angka yang lebih rendah di beberapa titik selama salinan. Mungkin versi rsync yang lebih baru akan default ke no-i-r dengan info=progress2, tetapi tidak dalam versi 3.1.2 saat ini.

Saya telah menemukan bahwa persentase dan waktu yang tersisa terlalu berlebihan saat menyalin ke direktori yang sudah berisi file (mis. seperti ketika Anda biasanya menggunakan cp-n"no clobber").

Ada alat baru bernama cv yang dapat menemukan deskriptor apa pun yang terkait dengan perintah yang sedang berjalan dan menunjukkan kemajuan dan kecepatan:https://github.com/Xfennec/cv

cv -w

output statistik untuk semua cp berjalan,mv dll. operasi

Pertanyaan duplikat: Is it possible to see cp speed and percent copied? - Unix & Linux Stack Exchange

Jika Anda sudah memulai perintah `cp’, dan tidak ingin menghentikannya sekarang, anda dapat ‘menonton’ Ukuran tujuan tumbuh seperti ini: command line - How to show the transfer progress and speed when copying files with cp? - Ask Ubuntu (‘watch’ du-hs"), untuk mengetahui itu benar-benar tumbuh dan salinannya berfungsi.