Dosyaları cp ile kopyalarken aktarım ilerlemesini ve hızını nasıl gösterebilirim?

Aksi halde, bunu başarabilecek alternatif bir komut satırı yardımcı programı var mı?

Karşın cp bu işlevselliğe sahip değil, kullanabilirsiniz pv bunu yapmak için:

pv my_big_file > backup/my_big_file

Not: Bu yöntem, dosyanın izinlerini ve sahipliğini kaybeder. Bu şekilde kopyalanan dosyalar, kendiniz oluşturmuşsunuz gibi aynı izinlere sahip olacak ve size ait olacaktır.

Bu örnekte, pv temel olarak, dosyayı kullanarak bir dosyaya yönlendirdiğiniz stdout * dosyasına çıkarır. > operatör. Eşzamanlı olarak, bunu yaptığınızda terminale ilerlemeyle ilgili bilgileri yazdırır.

İşte böyle görünüyor.:

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

Yapmanız gerekebilir & nbsp; Pv'yi yükle (alternatif olarak şunu yazın sudo apt-get install pv) sisteminizde.


*: Teknik bit

Unıx benzeri bir sistemde üç önemli veri akışı vardır: stdout (standart çıktı), stderr (standart hata) ve stdın (standart girdi). Her programda tabiri caizse üçü de vardır. Bu > yeniden yönlendirme işleci program çıktısını bir dosyaya yönlendirir. Yukarıda gördüğünüz gibi argümanlar olmadan, > bir programı yönlendirir standart çıktı bir dosyaya. cp temel olarak daha süslü bir şey yapmaz

cat source > destination

(nere cat sadece bir dosyayı okur ve stdout'a yazdırır). pv tıpkı cat gibi, ancak çıktı akışını başka bir yere yönlendirirseniz, bunun yerine ilerleme bilgilerini stdout'a yazdırır.

Şuna bir bak man pv bu konuda daha fazla bilgi edinmek için.


Başka bir seçenek olarak alt textTarafından içinde önerir bu cevap, bunun yerine rsync kullanmaktır:

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

Bu, ilerlemeyi gösterirken dosya izinlerini / sahipliğini koruyacaktır.

Yok işte. burada neden olduğu konusunda. Her ne kadar ihtiyacın olandan fazlasını yapsa da, rsync sahip olduğu --progress parametre. Bu -a izinleri vb. tutacak ve -h insan tarafından okunabilir olacak.

rsync -ah --progress source destination

Çıktı şöyle bir şeye benzeyecek:

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)

Dosyalarınızın doğru aktarılıp aktarılmadığını görmek istiyorsanız şunları kullanabilirsiniz gcp ve gcp cp gibidir, ancak varsayılan olarak size bir ilerleme çubuğu verir, böylece neyin kopyalandığını görebilirsiniz. Programın wiki notları, gcp gibi birçok kullanışlı özelliğe sahiptir

  • transfer ilerleme göstergesi
  • sürekli kopyalama hatası (bir sonraki dosyaya atla)
  • kopyalama durumu günlüğü: gcp tüm eylemlerini günlüğe kaydeder, böylece hangi dosyaların başarıyla kopyalandığını bilmek mümkündür
  • hedef dosya sistemi sınırlamalarını işlemek için ad karışıklığı (örneğin uyumsuz karakterlerin silinmesi "*" veya "?" yağ üzerinde)

Ancak, aracı kullanırken ilerleme çubuğu% 100'e ulaşmış olsa bile, aktarım işleminin başarıyla tamamlandığından emin olmak için medyanızı güvenli bir şekilde kaldırmadan önce terminal isteminiz yeniden görünene kadar beklemeniz gerekir.

gcp dosyaları kopyalamak için kullanılır ve aşağıdaki gibi seçeneklere sahiptir --preserve böylece çeşitli öznitelikler ve izinler korunabilir ve --recursive böylece tüm dizinler kopyalanabilir. Seçenekleri hakkında daha fazla bilgi girerek bulunabilir man gcp ya da Ubuntu manpages çevrimiçi. Bir öğretici de mevcuttur bu sitede.

Yüklemek gcp depolardan

sudo apt-get install gcp

(Not: Ubuntu 12.10'da yeni automount noktası, örneğin, /media/user/usbdisk)

Bir dosyayı girerek medyanıza kopyalayabilirsiniz

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

ve bir klasörü medyanıza kopyalayın

gcp -rv ~/Podcasts /media/Mik2

Örnek çıktı gcp ilerleme çubuğu ile:

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

Elbette, diskinize kopyalanacak birden fazla dosya veya klasör belirtebilirsiniz ve aşağıda ele alınan birçok seçenek vardır man gcp.

Bu amaç için cURL kullanmaktan zevk alıyorum. Man sayfası "DOSYA" protokolünü desteklendiği şekilde listeler, bu nedenle url'deki diğer protokoller gibi kullanın:

curl -o destination FILE://source

Hız, ilerleme, kalan süre ve daha fazlası - hepsi tanıdık bir biçimde.

Adında bir araç var progress çeşitli farklı komutları inceleyebilen ve onlar için ilerleme bilgilerini görüntüleyebilen depolarda.

Komutu kullanarak yükleyin

sudo apt-get install progress

Bu araç şu şekilde kullanılabilir:

cp bigfile newfile & progress -mp $!

Çıktı:

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

Hızı göstermese de, birden çok dosyayı kopyalarken, -v seçeneği için cp komut size ilerleme bilgisi sağlayacaktır. örneğin

cp -rv old-directory new-directory

Çekirdek, hız ve genellikle yüzde gibi verilerin çoğunu bilir. Modern çekirdekler bunu / proc dosya sistemi aracılığıyla ortaya çıkarır.

hızı göster https://github.com/jnweiger/showspeed bu bilgiyi kullanır. Zaten çalışan programlara bağlanabilir ve bunun gibi periyodik güncellemeler verebilir:

$ 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)...

Karşın pv yerel ile başa çıkabilir cp görevler, kullanma dd ile pv her iki yerel ile de başa çıkabilir (cp) ve uzaktan (scp) görevler.

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

Lütfen emin olun path/to/dest.mkv çıkışlar touch path/to/dest.mkv

Bu, ilerlemeyi gösterebilir, ancak yüzde bilgilerini istiyorsanız,

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

Yerini almak 100M kaynak dosyanızın gerçek boyutu ile yukarıda.

İşte Uzak Kısım Geliyor

Karşın scp kullanarak mevcut ilerlemeyi zorlukla gösterebilir dd ile pv çocuk oyuncağı.

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

Rsync 3.1 veya daha yüksek bir sürümünüz varsa (rsync --version), izinleri ve mülkiyeti korurken (cp -Rpn) kopyalayabilir, dizinleri tekrarlayabilir, "tıkanıklık yok" ve genel ilerlemeyi (yalnızca dosyaya göre ilerleme yerine), kopyalama hızını ve (çok kaba) tahmini süreyi görüntüleyebilirsiniz.:

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

Sudo'nun yalnızca sahip olmadığınız dizinlerle / dosyalarla uğraşırken gerekli olduğunu unutmayın. Ayrıca, olmadan --no-i-r yüzde, kopyalama sırasında bir noktada daha düşük bir sayıya sıfırlanabilir. Belki de rsync'in sonraki sürümleri varsayılan olarak ınfo=progress2 ile no-i-r olur, ancak 3.1.2'nin geçerli sürümünde olmaz.

Zaten dosyaları içeren bir dizine kopyalarken kalan yüzde ve sürenin büyük ölçüde fazla tahmin edildiğini buldum (örn. genellikle cp -n "no clobber" kullanacağınız zaman olduğu gibi).

Çalışan bir komutla ilgili herhangi bir tanımlayıcıyı bulabilen ve ilerlemeyi ve hızı gösterebilen cv adlı yeni bir araç var:https://github.com/Xfennec/cv

cv -w

çalışan tüm cp, mv vb. İstatistiklerini çıkarır. operasyonlar

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

Cp' komutunu zaten başlattıysanız ve şimdi durdurmak istemiyorsanız, hedefin boyutunun bu şekilde büyümesini izleyebilirsiniz`: command line - How to show the transfer progress and speed when copying files with cp? - Ask Ubuntu ('izle 'du -hs"), gerçekten büyüdüğünü ve kopyanın çalıştığını bilmek.