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 Oleh 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.