대용량 디렉토리 이동시 mv
진행률(%)을 볼 수 있는 방법이 있나요 ? cp
젠투의 명령에는 -g
진행 상황을 표시하는 스위치가 있습니다.
답변1
progress
실행 명령과 관련된 설명자를 찾고 진행률과 속도를 표시할 수 있는 새로운 도구가 있습니다 .여기에서 찾을 수 있습니다
progress -w
실행 중인 모든 cp, mv 및 기타 작업의 통계 출력
답변2
더 간단한 솔루션이 있을 때 coreutil에서 바이너리를 덮어쓰는 아이디어가 마음에 들지 않으므로 여기에 내 방법이 있습니다.
동기화: rsync는 파일을 복사하고 -P
진행률 표시줄 스위치를 갖습니다. 따라서 rsync가 설치되어 있으면 쉘 도트 파일에서 간단한 별칭을 사용할 수 있습니다.
alias cp='rsync -aP'
단점은 rsync가 cp보다 약간 느리다는 것입니다. 하지만 이를 시간에 맞춰 측정하고 스스로 결정해야 합니다. 저는 그걸로 괜찮습니다 :-)
쉘 스크립트: 쉘 스크립트는 진행률 표시줄을 생성할 수도 있습니다. 얼마전에 인터넷에서 본건데 출처가 기억이 안나네요.
#!/bin/sh
cp_p()
{
strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
| awk '{
count += $NF
if (count % 10 == 0) {
percent = count / total_size * 100
printf "%3d%% [", percent
for (i=0;i<=percent;i++)
printf "="
printf ">"
for (i=percent;i<100;i++)
printf " "
printf "]\r"
}
}
END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
}
이것은 다음과 같습니다:
% cp_p /home/echox/foo.dat /home/echox/bar.dat
66% [===============================> ]
술집:
'bar' - ASCII 진행률 표시줄이 있는 'cat'
bar
모든 유형의 작업(cp, tar 등)에 대한 프로세스 표시줄을 표시하는 데 사용되는 작은 쉘 스크립트입니다. 다음에서 예제를 찾을 수 있습니다.프로젝트 홈페이지.
또한 Bourne Shell용으로 작성되었으므로 근처 어디에서나 실행할 수 있습니다.
답변3
cp 및 mv의 패치 버전을 빌드할 수 있으며 둘 다 -g 스위치를 지원하여 진행 상황을 표시합니다. 지침과 패치 포함이 페이지.하지만: 페이지에서 작업 과정을 안내합니다.
$ sudo cp src/cp /usr/bin/cp
$ sudo cp src/mv /usr/bin/mv
원래 cp와 mv를 덮어씁니다. 여기에는 두 가지 단점이 있습니다. 첫째, 최신 coreutils 패키지가 시스템에 도착하면 덮어쓰게 됩니다. 둘째, 패치 버전에 문제가 있는 경우 표준 cp 및 mv에 의존하는 스크립트가 중단될 수 있습니다. 차라리 다음과 같이 하고 싶습니다.
$ sudo cp src/cp /usr/local/bin/cpg
$ sudo cp src/mv /usr/local/bin/mvg
사용자가 컴파일한 프로그램의 파일을 /usr/local/bin에 복사하고 다른 이름을 지정합니다. 따라서 진행률 표시줄을 원할 때 mvg -g bigfile /mnt/backup
일반적으로 mv라고 말하고 사용합니다.
이렇게 할 수도 alias mvg="/usr/local/mvg -g"
있습니다. 그냥 말하고 mvg bigfile /mnt/backup
진행률 표시줄을 직접 가져오면 됩니다.
답변4
목표가 진행 표시줄을 사용하여 디렉터리를 이동/복사하는 것이지만 비터미널 GUI를 피하는 것이라면 mc(Midnight Commander)가 좋은 선택입니다.