cp -R 또는 tar.gz 파일 압축 풀기 중 무엇이 더 빠릅니까?

cp -R 또는 tar.gz 파일 압축 풀기 중 무엇이 더 빠릅니까?

CentOS 시스템에는 총 기가바이트에 달하는 tar.gz 파일이 있습니다. 대부분의 tar.gz 파일은 실제로 매우 작지만 이미지가 포함된 파일은 큽니다. 하나는 7.7G, 다른 하나는 4G 정도, 한두 개는 1G 정도입니다.

이미 파일의 압축을 풀었고 이제 모든 파일의 두 번째 복사본을 원합니다.

나는 압축을 푼 파일을 복사하는 것이 다시 압축을 푸는 것보다 더 빠를 것이라고 생각했습니다. 하지만 약 10분 전에 cp -R을 실행하기 시작했고 지금까지 500M 미만이 복사되었습니다. 포장 풀기 과정이 더 빨라진 것은 확실합니다.

내가 맞나요?

그렇다면 왜 그렇습니까? 단순히 기존 구조를 복제하는 것보다 압축을 푸는 것이 더 빠르다는 것은 말이 되지 않는 것 같습니다.

답변1

두 가지 시나리오를 고려하십시오.

  • 복사하려면 디스크에서 전체 파일을 읽고 디스크에 써야 합니다.
  • Tar-Gzip을 사용하려면 디스크에서 더 작은 파일을 읽고 압축을 푼 다음 디스크에 써야 합니다.

압축 해제 프로세스로 인해 CPU에 부담이 가해지지 않는다면 I/O 작업이 제한되는 것이 당연합니다. 이 주장에 따르면(그리고 두 경우 모두 동일한 양을 써야 하기 때문에) 작은 파일(tar.gz)을 읽는 것이 큰 파일을 읽는 것보다 시간이 덜 걸립니다. 또한 많은 작은 파일을 읽는 것보다 단일 파일을 읽는 것이 더 빠르기 때문에 시간이 절약됩니다.

절약되는 시간은 읽기(I/O)와 압축 해제(CPU)에 소요되는 시간의 차이에 따라 달라집니다. 따라서 최소한으로 압축할 수 있는 파일(예: mp3, jpg, zip 등과 같이 이미 압축된 파일)의 경우 압축 해제에 필요한 시간이 읽기 작업에서 절약된 시간보다 길 가능성이 높습니다. 복사하는 것보다 압축을 푸는 것이 더 느립니다.

(I/O 속도가 느릴수록 압축 파일을 사용하면 더 많은 시간이 절약된다는 점은 주목할 가치가 있습니다. 복사 작업의 소스와 대상이 동일한 물리적 디스크에 있는 경우 이러한 시나리오 중 하나가 됩니다.)

답변2

매우 작은 파일을 읽는 것이 여러 개의 큰 파일을 읽는 것보다 훨씬 빠릅니다. 이는 CPU가 압축을 풀어야 하는 경우에도 일반적으로 적용됩니다.

관련 정보