it-swarm-tr.com

Komut satırından "cp" yaparken aktarım hızı gösterilsin mi?

Mümkün mü?

50
Chris

Standart coreutils cp komutu bunu desteklemiyor. Gentoo'ya artık bir sebepten dolayı dahil edilmese de, etrafında farklı sürümler için ekleyen bir Gentoo yaması var; coreutils 6.10 sürümü onların bugzilla , ve çevresinde başka birçok eminim.

cp öğesini yamalamak istemiyorsanız başka bir komut kullanmanız gerekir. Örneğin, rsync bir --progress bayrak, böylece şunları yapabilirsiniz:

rsync --progress source destination

Kopyalamak yerine verileri toplayıp stdout'u hedefe yönlendirirseniz (yani cat source > destination), boru akışını ölçen ve ortasına yerleştiren bir program kullanabilirsiniz (cat source | SOME-PROGRAM > destination); bu ilgili sor . Ben orada tavsiye pv (Boru Görüntüleyici):

Screenshot of pv from the pv homepage

Eğer verirsen --rate bayrak aktarım hızını gösterecektir

53
Michael Mrozek

Pv'yi bu şekilde kullanmanın bu amaç için iyi çalıştığını görüyorum

pv -p file1 > file2

-p anahtarı, dosya aktarım ilerlemesini gösterir. Aktarım hızını görmek için -r değiştirmek. Zaman içinde ortalama aktarım hızını görmek istiyorsanız, -a değiştirmek.

pv -pra file1 > file2
17
Patrick

Bunun oldukça eski olduğunu biliyorum, ama ...

Hızı gerçekten görüntülemek istemiyorsanız, ancak yalnızca büyük bir dosyanın kopyalanmasında bir şey olup olmadığını izlemek istiyorsanız, watch komutunu da kullanabilirsiniz (mv ile de çalışır) ):

cp /path/to/myfile /path/to/target/myfile

Ardından, başka bir Kabukta veya kopyalama komutunu arka plana itme (ör. Ctrl + Z ve ardından bg), sonucu şunlarla kontrol edebilirsiniz:

watch "ls -sh1 /path/to/target"

Bu, ls komut güncellemesinin (varsayılan olarak her 2.0 saniyede bir) çıktısını sürekli olarak güncelleyecek ve şöyle bir şey görüntüleyecektir:

Every 2.0s: ls -sh1 /path/to/target                                      
Tue Jan 12 15:02:45 2016

total 1.1G
4.0K data
130M tmp1.txt
137M tmp2.txt
151M tmp3.txt
168M tmp4.txt
162M myFile
9
muelleth

Merhaba Aktarım hızını göstermenin başka bir yolu da localhost üzerinde scp kullanmaktır:
scp -rv src_folder [email protected]:/dest_folder

5
Christoph Kuhr

Verimi izlemek için du kullanan bir komut dosyası. Bu daha fazla uygulama agnostiktir ve ayrıca https://unix.stackexchange.com/a/301490/183269 içinde de belirtilmiştir. Komut dosyasını hedef Ana Bilgisayarda yürütün.

monitorio () {
# show write speed for file or directory
    interval="10"
    target="$1"
    size=$(du -ks "$target" | awk '{print $1}')
    firstrun="1"
    echo ""
    while [ 1 ]; do
        prevsize=$size
        size=$(du -ks "$target" | awk '{print $1}')
        #size=$(ls -l "$1"  | awk '{print $5/1024}')
        kb=$((${size} - ${prevsize}))
        kbmin=$((${kb}* (60/${interval}) ))
        kbhour=$((${kbmin}*60))
        # exit if this is not first loop & file size has not changed
        if [ $firstrun -ne 1 ] && [ $kb -eq 0 ]; then break; fi
        echo -e "\e[1A $target changed ${kb}KB ${kbmin}KB/min ${kbhour}KB/hour size: ${size}KB"
        firstrun=0
        sleep $interval
    done
}

örnek kullanım:

[email protected]:~$ dd if=/dev/zero of=/tmp/zero bs=1 count=50000000 &
[email protected]:~$ monitorio /tmp/zero
/tmp/zero changed 4KB 24KB/min 1440KB/hour size: 4164KB
/tmp/zero changed 9168KB 55008KB/min 3300480KB/hour size: 13332KB
/tmp/zero changed 9276KB 55656KB/min 3339360KB/hour size: 22608KB
/tmp/zero changed 8856KB 53136KB/min 3188160KB/hour size: 31464KB
^C
[email protected]:~$ killall dd; rm /tmp/zero
1
gesell