Akankah Terminal menampilkan bilah progres ketika saya menyalin dengan "cp"?


33

Apakah mungkin menampilkan bilah kemajuan saat menyalin file di Terminal menggunakan cp?


2
... Anda juga bisa mempertimbangkan untuk menggunakannya rsync.
Asmus

Apakah ada cara untuk melakukan ini dengan progress bar keseluruhan tanpa menginstal alat pihak ketiga? Mungkin naskah atau sesuatu?
rraallvv

Jawaban:


49

Anda dapat menggunakan rsync sebagai gantinya.

rsync --progress /copy/from /copy/to

1
Cepat, mana yang lebih cepat, rsync atau cp?
daviesgeek

Jika semua file yang disalin tidak ada di tujuan saya tidak berpikir akan ada perbedaan yang nyata. Jika beberapa file memang ada di tujuan maka itu akan bervariasi karena rsync melakukan pengecekan. Rsync biasanya (tetapi tidak selalu) lebih cepat dalam hal itu.
bahamat

2
Menggunakan rsync -P /copy/from /copy/tosetara dengan rsync --partial --progress /copy/from /copy/toyang akan menampilkan kemajuan salinan, serta melanjutkan transfer jika terputus.
gh0st

Dan sama seperti cp, perlu -rbendera untuk membuatnya tidak melewati direktori
Alexander - Reinstate Monica

21

Selama cp, CtrlTmenampilkan persentase saat ini (setidaknya di macOS)


itu luar biasa!
felix021

1
Alasan ini berhasil adalah karena Ctrl-tmengirim SIGINFOsinyal dengan cara yang sama dengan Ctrl-cmengirim SIGINTsinyal. Anda dapat mis menggunakan loop di shell lain untuk berulang kali kill -INFOproses yang dimaksud jika Anda tidak ingin terus menekan tombol. Karena ini adalah sinyal, ia berfungsi dengan utilitas lain juga, mis dd. Ctrl-tdan SIGINFOdiwarisi dari BSD.
HTNW

1

Jika Anda menyalin file atau direktori besar menggunakan cp, Anda dapat membuka 'Monitor Aktivitas', buka tab 'Disk' dan cari proses 'cp'. Di sini Anda dapat melacak berapa banyak byte yang telah ditulis sejak boot terakhir, memberi Anda gambaran kasar tentang perkembangannya. (OS X 10.10).

Semoga itu bisa membantu!


0
#!/bin/sh
   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

Itu tidak sempurna, tetapi berfungsi ... letakkan di jalur direktori dan beri nama sesuatu yang serupa ..


Tunggu ... bagaimana saya menjalankannya ???
daviesgeek

2
Saya tidak ingat apakah OS X memiliki straceperintah pada saat jawaban ini ditulis (Juli 2011), tetapi jelas tidak hari ini.
Tim Ruddick

Ada ide bagaimana menjalankan ini di macOS?
rraallvv
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.