파일 복사 시 진행 표시줄을 만드는 방법

파일 복사 시 진행 표시줄을 만드는 방법

내 Linux 시스템에서 대용량 파일을 복사해야 합니다.

예:

cp source.txt target.txt

각 복사 파일의 복사가 아직 진행 중임을 표시하기 위해 진행률 표시줄을 만들고 싶습니다.

예"

cp file file1

파일 복사>파일1…

cp moon mars

복사달 > 화성...

답변1

즉, cp진행률 표시줄 출력에 대한 기본 기능을 찾을 수 없습니다. 왜? 많은 이유. 그러나 몇 가지 옵션이 있습니다.

  1. 다양한 도구를 사용하세요. rsync, @ user1404316이 언급했듯이 --progress:

    rsync -P largeFile copyLocation
    
  2. 추가 의미 체계가 필요하지 않은 경우 cp리디렉션을 통해 ("Pipe Viewer")를 사용하여 rsync새 파일을 만듭니다 .pvstdout

    pv < largeFile > copyLocation
    
  3. 만약 너라면하다progress해당 열에 대해 특별히 제공되지는 않지만 사용할 수 있는 추가 의미 체계가 필요합니다 . 그것은 붙어있다이미 실행 중프로세스이므로 다음과 같이 호출할 수 있습니다.

    # In one shell
    $ cp largeFile copyLocation
    
    # In another shell
    $ progress -m
    [ 4714] cp /home/hunteke/largeFile
            1.1% (114 MiB / 10.2 GiB)      # -m tells progress to continually update
    
  4. 또 다른 옵션은 gcp진행률 표시줄에 대해 원하는 작업을 정확하게 수행하는 것입니다.

    gcp largeFile copyLocation
    
  5. 또 다른 옵션은 URL curl처리 기능을 남용합니다 file://.

    curl -o copyLocation file:///path/to/largeFile
    
  6. 쉘 스크립트를 작성할 수 있습니다

답변2

rsync기능 을 포함하여 대용량 파일을 복사할 수 있는 뛰어난 기능을 갖춘 복사 프로그램 --progress이며 전송 중 데이터를 줄이는(따라서 복사 시간을 절약하는) 전송 중 압축 형식을 가지고 있습니다.

rsync --progress file1 file2

rsync네트워크 연결 끊김으로 인해 중단되었을 수 있는 복제본을 복원하는 기능도 있습니다. 이를 활성화하려면 옵션을 사용해야 합니다 --partial --append-verify. 네트워크를 통해 복사할 때 제가 생각할 수 있는 유일한 단점은 rsync두 대의 컴퓨터에 설치해야 한다는 것입니다. 발신자와 수신자. man자세한 내용 및 기타 모든 기능은 해당 페이지를 참조하세요.

어떤 이유로 설치할 수 없거나 rsync설치하고 싶지 않은 경우, 간단하고 좋은 대안 은 다음 pv과 같습니다.파이프 뷰어명령, 그것이 바로 당신이 요청한 것입니다.

pv from-file > to-file

pv또한 포함됩니다많은시각화 옵션. man사용 가능한 모든 혜택을 보려면 해당 페이지를 참조하세요 . 일반적으로 사용되는 몇 가지 옵션은 다음과 같습니다.

-p, --progress
-t, --timer
-e, --eta
-r, --rate
-a, --average-rate
-b, --bytes

관련 정보