Jika tidak, apakah ada utilitas baris perintah alternatif yang dapat mencapai ini?
sumber
Jika tidak, apakah ada utilitas baris perintah alternatif yang dapat mencapai ini?
Meskipun cp
tidak memiliki fungsi ini, Anda dapat menggunakannya pv
untuk melakukan 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 menampilkan file ke stdout *, yang Anda arahkan ke file menggunakan >
operator. Secara bersamaan, ia mencetak informasi tentang perkembangan ke terminal ketika Anda melakukan itu.
Seperti inilah tampilannya:
stefano@ubuntu:~/Data$ pv my_big_file > backup/my_big_file
138MB 0:00:01 [73.3MB/s] [=================================>] 100%
Anda mungkin perlu menginstal pv (sebagai alternatif, ketik sudo apt-get install pv
) pada sistem Anda.
*: Bit teknis
Ada tiga aliran data penting dalam sistem seperti-unix: stdout (output standar), stderr (standard error) dan stdin (input standar). Setiap program memiliki ketiganya. The >
operator redirection pengalihan keluaran program untuk file. Tanpa argumen, seperti yang Anda lihat di atas, >
mengarahkan output standar program ke file. cp
pada dasarnya tidak ada yang lebih menarik dari
cat source > destination
(Di mana cat
hanya membaca file dan mencetaknya ke stdout). pv
seperti kucing, tetapi jika Anda mengarahkan ulang aliran outputnya di tempat lain, itu akan mencetak informasi kemajuan ke stdout sebagai gantinya.
Lihatlah man pv
untuk mempelajari lebih lanjut tentang itu.
Opsi lain, seperti yang disarankan DoR dalam jawaban ini , adalah menggunakan rsync sebagai gantinya:
$ rsync -ah --progress source-file destination-file
sending incremental file list
source-file
621.22M 57% 283.86MB/s 0:00:01
Ini akan menjaga hak akses file / kepemilikan sambil menunjukkan kemajuan.
pv
tidak menangani izin dengan cara yang sama seperticp
halnya ... (berdasarkan satu tes cepat saya mencoba:pv
tidak menyalin bit eksekusi di ..rsync
lakukan.alias cp="rsync -avz"
cp sudah usang.pv
, Anda bisa mengintip/proc/PID of cp/fd
dan/proc/PID of cp/fdinfo
mencari tahu kemajuan. (Terserah Anda untuk menyimpulkan kecepatan.) Saya menggunakan teknik ini untuk menontonupdatedb
.-z
mungkin seharusnya hanya digunakan untuk salinan jaringan; mengompresi dan mendekompresi data untuk salinan lokal adalah overhead murni.rsync
pastikan untuk tidak menambahkan trailing/
ke jalur sumber (atau menghapus jika mis. Penyelesaian bash meletakkannya di sana secara otomatis). Kalau tidak, Anda akan mendapatkan hasil yang berbeda dari saat menggunakancp
(ataugcp
).Tidak ada. Lihat di sini mengapa. Meskipun lebih dari yang Anda butuhkan,
rsync
memiliki--progress
parameter. The-a
akan terus perizinan, dll, dan-h
akan dibaca manusia.Outputnya akan terlihat seperti ini:
sumber
-r
flag untuk mengembalikan direktori. Ia bahkan dapat disebut sebagai pengganti langsung untuk cp:alias cp="rsync -ah --progress"
--progress
membuat kepala saya berputar 🙃 menonton semua tampilan output di terminal. Jadi mereka yang datang ke sini dari pencarian kata kunci AOL,rsync -ah --info=progress2 [source] [destination]
menyajikan output dengan sedikit lebih bijaksana IMHO IMHO.Jika Anda ingin melihat apakah file Anda ditransfer dengan benar, Anda dapat menggunakan
gcp
dangcp
seperti cp tetapi secara default memberi Anda bilah progres sehingga Anda dapat melihat apa yang sedang disalin. Sebagai catatan wiki program ,gcp
memiliki beberapa fitur yang bermanfaat sepertiNamun, bahkan ketika bilah kemajuan telah mencapai 100% saat menggunakan alat ini, Anda harus menunggu sampai terminal Anda muncul kembali sebelum mengeluarkan media Anda dengan aman sehingga Anda dapat memastikan bahwa proses transfer telah berhasil diselesaikan.
gcp
digunakan untuk menyalin file dan memiliki opsi seperti--preserve
sehingga berbagai atribut dan izin dapat dipertahankan dan--recursive
agar seluruh direktori dapat disalin. Informasi lebih lanjut tentang opsi dapat ditemukan dengan memasukkanman gcp
atau dengan pergi ke halaman manual Ubuntu online . Tutorial juga tersedia di situs ini .Instal
gcp
dari repositori dengan( Catatan : di Ubuntu 12.10 titik automount baru, misalnya,
/media/user/usbdisk
)Anda dapat menyalin file ke media Anda dengan memasukkan
dan salin folder ke media Anda dengan
Output sampel dari
gcp
dengan progress bar:Anda tentu saja dapat menentukan beberapa file atau folder untuk disalin ke disk Anda, dan ada banyak opsi lain yang dibahas
man gcp
.sumber
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
export DISPLAY=:0.0
sebelum memulai gcp. Jika mesin tidak memiliki kepala maka Anda harus memulai xsession menjadi framebuffer virtual atau semacamnya, pada saat itu Anda mungkin harus mencari program laingcp
cukup baik tetapi persyaratan DBUS / X aneh. Saya menangani ini melalui SSH dengan menggunakan ssh forwarding:ssh -X user@host
dan itu memungkinkan saya untuk menjalankannya.Saya mendapatkan tendangan dari menggunakan CURL untuk tujuan yang tepat ini. Halaman manual mencantumkan protokol "FILE" sebagai didukung, jadi gunakan saja seperti protokol lain di URL:
Kecepatan, kemajuan, sisa waktu, dan banyak lagi - semuanya dalam format yang umum.
sumber
pv
, bahwa itu tidak akan menyimpan izin.Meskipun tidak menampilkan kecepatan, saat menyalin beberapa file,
-v
opsi kecp
perintah akan memberi Anda info kemajuan. misalnyasumber
Kernel tahu sebagian besar data seperti kecepatan, dan seringkali juga persentase. Kernel modern mengekspos ini melalui sistem file / proc mereka.
showspeed dari https://github.com/jnweiger/showspeed menggunakan info itu. Itu dapat melampirkan ke program yang sudah berjalan dan memberikan pembaruan berkala seperti ini:
sumber
pkill -USR1 dd
untukdd
menunjukkan statusnya, opsi lain adalahwatch -n 1 pkill -USR1 dd
membuatnya menunjukkan kemajuannya secara berkala (setiap detik).Ada alat yang disebut
progress
dalam repositori yang dapat memeriksa berbagai perintah yang berbeda dan menampilkan info kemajuan untuk mereka.Instal menggunakan perintah
Alat ini bisa digunakan seperti itu:
Keluaran:
sumber
Meskipun
pv
dapat menanganicp
tugas - tugas lokal , menggunakandd
denganpv
dapat menangani tugas - tugas lokal (cp
) dan jarak jauh (scp
).Harap pastikan
path/to/dest.mkv
pintu keluar olehtouch path/to/dest.mkv
Ini dapat menunjukkan kemajuan, tetapi jika Anda menginginkan informasi persentase,
Ganti di
100M
atas dengan ukuran sebenarnya dari file sumber Anda.Inilah Bagian Remote
Meskipun
scp
hampir tidak dapat menunjukkan kemajuan saat ini, menggunakandd
denganpv
sepotong kue.sumber
dd
memilikistatus=progress
: askubuntu.com/a/824895/52975Ada alat baru bernama cv yang dapat menemukan deskriptor yang terkait dengan perintah yang sedang berjalan dan menunjukkan kemajuan dan kecepatan: https://github.com/Xfennec/cv
menampilkan statistik untuk semua operasi cp, mv dll
sumber
watch cv -q
bahkan lebih rapicp
menyalin direktori secara rekursif atau tidak.Seperti yang banyak dikatakan, cp tidak termasuk fungsi ini.
Hanya dengan melemparkan $ 0,02, apa yang biasanya saya lakukan dengan situasi penyalinan sepele (yaitu tidak
-R
):Lihat seberapa besar file tersebut dan ingat
Mulai menyalin
Buka terminal lain
Jalankan
watch ls -lh DIR
pada direktori di mana targetnyaIni dapat membuat saya terus diperbarui pada ukuran file target, dengan kerumitan yang cukup minimum.
Sebagai alternatif untuk situasi yang kurang sepele, misalnya direktori penyalinan secara rekursif, Anda dapat menggunakan
watch du -hs DIR
untuk melihat ringkasan ukuran DIR. Namun, du dapat memakan waktu lama untuk menghitung dan bahkan dapat memperlambat penyalinan, jadi Anda mungkin ingin menggunakan-n INTERVAL
argumen untuk menonton sehingga pertukaran dapat diterima.Pembaruan: Jika Anda menggunakan wild-card dengan perintah yang digunakan dengan watch du, mis
watch du -hs backup/*
. Jangan lupa mengutip:jika tidak, wildcard hanya akan diperluas sekali , ketika arloji dimulai sehingga du tidak akan melihat file / subdirektori baru.
sumber
dd status=progress
Opsi ditambahkan di GNU Coreutils 8.24+ (Ubuntu 16.04):
Terminal menunjukkan garis tipe:
Lihat juga: Bagaimana Anda memantau kemajuan dd?
sumber
Jika Anda memiliki rsync 3.1 atau lebih tinggi (
rsync --version
), Anda dapat menyalin (cp -Rpn) sambil mempertahankan izin dan kepemilikan, kambuh direktori, "no clobber," dan tampilkan kemajuan keseluruhan (bukan hanya kemajuan berdasarkan file), kecepatan salin, dan ( sangat kasar) perkiraan sisa waktu dengan:Perhatikan bahwa sudo hanya diperlukan jika berurusan dengan direktori / file yang tidak Anda miliki. Selain itu, tanpa
--no-i-r
, persentase dapat diatur ulang ke angka yang lebih rendah di beberapa titik selama penyalinan. Mungkin versi rsync nantinya akan default-no-ir dengan info = progres2, tetapi tidak dalam versi 3.1.2 saat ini.Saya telah menemukan bahwa persentase dan sisa waktu terlalu berlebihan ketika menyalin ke direktori yang sudah berisi file (mis. Seperti ketika Anda biasanya menggunakan cp -n "no clobber").
sumber
Gunakan skrip shell:
Ini akan terlihat seperti:
Sumber
sumber
Bergantung pada apa yang ingin Anda lakukan, Komandan Tengah Malam (
mc
) mungkin jawabannya. Saya terkejut itu belum disebutkan.Alat suka
pv
ataursync
bagus untuk menampilkan progres transfer satu file besar, tetapi ketika harus menyalin seluruh direktori / pohon,mc
hitung ukurannya dan kemudian tampilkan progresnya dengan sangat baik. Plus itu tersedia di luar kotak pada sebagian besar sistem.sumber
satu opsi lagi untuk mempertahankan atribut bisa (jika
source
folder itu akan dibuat didestination
)semoga semoga bermanfaat bagi seseorang. Untuk memperkirakan waktu transfer, ini dapat dicapai dengan melakukan
do -s source
di muka dan meneruskannya sebagai-s <size>
parameterpv
.sumber
-f -
berlebihan.tar
Output default untukc
dan input untukx
adalah stdout dan stdin.Anda dapat menyalin menggunakan program apa pun. Pada saat yang sama, Anda dapat memulai
sudo iotop
dan melihat kecepatan baca / tulis disk sebenarnya tanpa kemajuan.sumber
Periksa kode sumber untuk progress_bar di repositori git di bawah ini
https://github.com/Kiran-Bose/supreme
Juga mencoba paket bash script khusus tertinggi
Unduh file deb dan instal dalam distribusi berbasis debian atau unduh file sumber, modifikasi dan gunakan untuk distro lain
Tinjauan fungsionalitas
(1) Buka Aplikasi ---- Firefox ---- Kalkulator ---- Pengaturan
(2) Kelola File ---- Pencarian ---- Navigasi ---- Akses cepat
(3) Kelola Telepon ---- Memindahkan / Menyalin dari telepon ---- Memindahkan / Menyalin ke telepon ---- Menyinkronkan folder
(4) Kelola USB ---- Pindahkan / Salin dari USB ---- Pindahkan / Salin ke USB
sumber
pv tahu cara menonton deskriptor file yang diberi pid, apakah itu cp atau sesuatu yang lain
Dari dokumentasi:
Contoh:
sumber