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

33

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

daviesgeek
sumber
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
bahamat
sumber
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)

Vamos
sumber
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!

Franz
sumber
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 ..

Essobi
sumber
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