노틸러스를 사용하여 대용량 파일을 복사 할 때 문제가 있습니다 (정지됨). 를 사용하여 복사해야합니다 cp
. 복사 된 %와 전송 속도를 나타내는 매개 변수가 있는지 알고 싶습니다.
답변
rsync
progress2
전체 백분율을 나타내는 이라는 플래그가 있습니다 .
rsync --info=progress2 source dest
답변
당신 cp
이 확실히 다른 도구를 허용한다면 가능합니다. 단일 파일의 경우을 사용할 수 있습니다 pv
. 좋은 통계를 제공하는 작은 도구입니다.
pv inputfile > outputfile
파일이나 디렉토리가 여러 개인 경우 tar를 사용할 수 있습니다.
tar c sourceDirectory | pv | tar x -C destinationDirectory
쉘 함수로 랩핑 할 수 있습니다. 타이핑하는 것이 적고 시맨틱이에 가깝습니다 cp
. 다음은 매우 간단한 (오류 방지 기능이 아님) 기능입니다.
cpstat () {
tar c "$1" | pv | tar x -C "$2"
}
일부 버전은 tar
위에서 언급 한 구문 (예 : Solaris tar
)을 지원하지 않으므로 다음 변형을 사용해야합니다.
cpstat () {
tar cf - "$1" | pv | (cd "$2";tar xf -)
}
당신은 이것을 이렇게 부릅니다
cpstat sourceDirectory destinationDirectory
pv
남은 시간을 추정 할 수 있도록 추가로 향상시킬 수 있습니다 .
주석에 언급 된 frostschutz와 같은 다른 솔루션은 rsync를 --progress
옵션 과 함께 사용하는 것입니다.
rsync --progress -a sourceDirectory destinationDirectory
답변
rsync
복사 진행 중 진행률을 표시하는 데 가장 적합합니다.
전의:
rsync -avh --progress sourceDirectory destinationDirectory
답변
다른 답변에서 설명했듯이 cp는 해당 기능을 제공하지 않습니다. 그러나 진행률 (이전의 cv) 은이 누락 된 기능을 제공하는 데 매우 유용한 작은 도구입니다.
이 도구는 시스템에서 현재 실행중인 coreutils 기본 명령 (cp, mv, dd, tar, gzip / gunzip, cat, …)을 찾고 복사 된 백분율을 표시하는 Tiny Dirty Linux Only * C 명령으로 설명 할 수 있습니다. 데이터.
나는 지난 몇 달 동안 그것을 사용해 왔으며 견고합니다.
답변
cp 속도와 퍼센트가 복사되는 것을 볼 수 있습니까?
예, cp
터미널에 명령 진행 상황을 표시 할 수 있습니다 .
방법 # 1 : (사용 progress
)
새 터미널을 열고 입력 progress
하면 cp
다음과 같은 명령 진행률 및 기타 명령 이 표시 됩니다.
cp, mv, dd, tar, cat, rsync, grep, fgrep, egrep, cut, sort, md5sum, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, adb, gzip, gunzip, bzip2, bunzip2, xz, unxz, lzma, unlzma, 7z, zcat, bzcat, lzcat, split, gpg
를 설치하지 않은 경우 다음 명령 progress
을 사용하여 리포지토리에서 설치할 수 있습니다 .CentOS
yum -y install progress
그런 다음 cp
백그라운드에서 명령 을 실행 한 후 또는 cp
정상적으로 실행 한 후 다른 터미널을 열려면 다음 명령을 시도하십시오.
# progress -m
출력 참조 :
[30904] cp /home/user/file.mp4
2.3% (200.9 MiB / 8.4 GiB) 3.6 MiB/s remaining 0:38:58
방법 # 2 : (패치 사용 cp
)
또는 GNU를 다운로드하여 coreutils
패치하십시오.
cd /tmp
wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.21.tar.xz
tar -xvJf coreutils-8.21.tar.xz
cd coreutils-8.21
wget https://raw.githubusercontent.com/atdt/advcpmv/master/advcpmv-0.5-8.21.patch
patch -p1 -i advcpmv-0.5-8.21.patch
운영:
export FORCE_UNSAFE_CONFIGURE=1
./configure
make
두 개의 파일을 복사 cp
하고 mv
아래에 loacated coreutils-8.21/src/
에를 /usr/local/bin
:
cp src/cp /usr/local/bin/cp
cp src/mv /usr/local/bin/mv
또는 파일 관리자를 루트로 사용하여 복사하십시오.
에 다음 줄을 추가하십시오 ~/.bashrc
.
alias cp='cp -gR'
alias mv='mv -g'
로그 아웃 및 로그인
진행률 표시 줄은 작성자가 권장 하지 –g
않거나 표시하지 않고 표시 할 수 있습니다.–progress-bar
출력 참조 :
0 files copied so far... 194.4 MiB / 8.4 GiB
[||--------------------------------------------------------------------------------] 2.3 %
Copying at 3.3 MiB/s (about 0h 5m 47s remaining)
/home/user/file.mp4 194.4 MiB / 446.1 MiB
[||||||||||||||||||||||||||||||||||||----------------------------------------------] 43.6 %
답변
이 게시물이 다소 오래된 것으로 나타났습니다. 그러나 현재 문제에 대한 해결책을 만들면서 해결책을 게시 할 것이라고 생각했습니다.
시나리오 : 복사하려는 디렉토리 구조가 매우 커서 하나의 터미널 창에서 cp -R sourcedir destdir 명령을 실행합니다.
다른 터미널 창을 열거 나 프로세스를 백그라운드로 푸시 (Ctrl+Z,bg<CR>)
한 다음 진행률 표시기를 빈민가 방식으로 만듭니다.
먼저 복사하려는 디렉토리 구조의 전체 크기를 얻습니다.
du -sh /path/sourcedirectory/
결과를 기가 바이트 (G)로 변환 한 다음 변수 sourcesize에있는 결과 대신 n을 대체하십시오. sourcesize 및 destdir (대상 디렉토리)을 삽입 한 후 아래 명령을 실행하십시오.
while true; do sourcesize=n destdir=/path/destinationdirectory/ copyprogress="$(export | du -sh $destdir | awk '{print $1}' | sed 's/[^0-9.]*//g' )" ; echo "scale=3 ; $copyprogress / $sourcesize * 100" | bc | xargs echo -n ; echo % completed ; sleep 10 ; done
10 초마다 진행률이 다음과 같은 메시지와 함께 인쇄됩니다.
0.100% completed
0.200% completed
0.300% completed
... etc
이 솔루션은 복사 속도를 해결하지 못했지만 위의 명령을 확장하여 bash 스크립트로 만들면 더 쉽게 읽을 수 있습니다. 예를 들어 복사되는 데이터 양을 확인하여 pr. n 시간 단위에서 속도는 계산 및 표시하기에 사소한 것이어야합니다.
답변
Marco의 답변을 향상시키기 위해 오늘이 버전의을 작성 cpstat
했으므로 많은 디렉토리를 복사하고 마지막 매개 변수를 대상 경로로 사용할 수 있습니다. 상대 딥 경로를 소스로 사용하면으로 인해 tar
동일한 종속 디렉토리 트리를 자동으로 작성할 수 있습니다 .
function cpstat () {
tar -cf - "${@: 1: $#-1}" |
pv -s "$( du -cs -BK --apparent-size "${@: 1: $#-1}" |
tail -n 1 |
cut -d "$(echo -e "\t")" -f 1)" |
( cd "${@: $#}"; tar -xf - )
;}