cp 속도와 퍼센트가 복사되는 것을 볼 수 있습니까? 문제가 있습니다 (정지됨).

노틸러스를 사용하여 대용량 파일을 복사 할 때 문제가 있습니다 (정지됨). 를 사용하여 복사해야합니다 cp. 복사 된 %와 전송 속도를 나타내는 매개 변수가 있는지 알고 싶습니다.



답변

rsyncprogress2전체 백분율을 나타내는 이라는 플래그가 있습니다 .

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을 사용하여 리포지토리에서 설치할 수 있습니다 .CentOSyum -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 %

출처 : linuxhelp


답변

이 게시물이 다소 오래된 것으로 나타났습니다. 그러나 현재 문제에 대한 해결책을 만들면서 해결책을 게시 할 것이라고 생각했습니다.

시나리오 : 복사하려는 디렉토리 구조가 매우 커서 하나의 터미널 창에서 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 - )

;}