가능합니까?
답변1
표준 coreutils cp
명령은 이 기능을 지원하지 않습니다. 다른 버전에 추가하기 위한 Gentoo 패치가 작업 중이지만, 어떤 이유로든 Coreutils 6.10 버전은 더 이상 포함되지 않습니다.버그질라에서, 그리고 주변에 다른 사람들도 많이 있을 거라고 확신해요.
패치를 원하지 않으면 cp
다른 명령을 사용해야 합니다. 예를 들어, 다음과 같은 작업을 수행할 수 있는 플래그가 rsync
있습니다 .--progress
rsync --progress source destination
데이터를 복사한 다음 stdout을 대상(예: cat source > destination
)으로 리디렉션하는 대신 파이프 처리량을 측정하는 프로그램을 사용하여 중간( cat source | SOME-PROGRAM > destination
)에 삽입할 수 있습니다.이 관련 질문. 제가 추천하는 곳은 바로PV(파이프라인 뷰어):
플래그를 지정하면 --rate
전송 속도가 표시됩니다.
답변2
나는 pv를 이런 식으로 사용하는 것이 이 목적에 적합하다는 것을 알았습니다.
pv -p file1 > file2
스위치에는 -p
파일 전송 진행 상황이 표시됩니다. 전송 속도를 보려면 -r
스위치를 추가하세요. 일정 기간 동안의 평균 전송 속도를 보려면 이 -a
스위치를 사용할 수 있습니다.
pv -pra file1 > file2
답변3
나는 이것이 오래되었다는 것을 알고 있지만 ...
실제로 속도를 표시하고 싶지 않고 대용량 파일을 복사할 때 어떤 일이 발생하는지 확인하려는 경우 다음 watch
명령을 사용하면 됩니다(이 역시 작동함 mv
).
cp /path/to/myfile /path/to/target/myfile
그런 다음 다른 셸에서 복사 명령을 백그라운드로 푸시하거나(예: Ctrl + Z
뒤에 bg
) 다음을 사용하여 결과를 확인할 수 있습니다.
watch "ls -sh1 /path/to/target"
그러면 업데이트 명령의 출력이 지속적으로 업데이트되어 ls
(기본적으로 2.0초마다) 다음이 표시됩니다.
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
답변4
du
처리량을 모니터링하는 스크립트는 다음과 같습니다. 이는 애플리케이션에 구애받지 않으며 또한https://unix.stackexchange.com/a/301490/183269. 대상 호스트에서 스크립트를 실행합니다.
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
}
사용 예:
user@host:~$ dd if=/dev/zero of=/tmp/zero bs=1 count=50000000 &
user@host:~$ 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
user@host:~$ killall dd; rm /tmp/zero