여러 파일을 하나로 병합하는 가장 빠른 방법(tar czf는 너무 느림)

여러 파일을 하나로 병합하는 가장 빠른 방법(tar czf는 너무 느림)

tar czf현재 병합 백업 파일을 실행 중입니다 . 이러한 파일은 특정 디렉터리에 있습니다.

그러나 파일 수가 증가하고 있습니다. 사용 tzr czf시간이 너무 깁니다(20분 이상 계속 증가).

확장 가능한 방식으로 더 빠르게 파일을 병합해야 합니다.

genisoimage, readom를 찾았 mkisofs지만 어느 것이 가장 빠른지, 각각의 한계는 무엇인지 모르겠습니다.

답변1

대부분의 시간을 CPU 또는 I/O에 소비하는지 확인해야 합니다. 어느 쪽이든 개선할 수 있는 몇 가지 방법이 있습니다.

답: 압축하지 마세요.

요구사항 목록에 "압축"을 언급하지 않았으므로 매개변수 목록에서 "z"를 제거해 보세요 tar cf. 이렇게 하면 작업 속도가 약간 빨라질 수 있습니다.

이전에 백업된 파일을 건너뛰려면 "-N"을 사용하는 등 프로세스 속도를 높이는 다른 기술이 있습니다.

B: dd를 사용하여 전체 파티션을 백업하세요.

또는 전체 파티션을 백업하려면 전체 디스크 이미지를 복사하세요. 이렇게 하면 처리가 저장되고많은디스크 헤드 탐색 시간. tar더 높은 수준에서 작동하는 다른 프로그램에는 파일 내용의 위치를 ​​찾고 더 많은 작업을 수행하기 위해 디렉터리 항목과 inode를 읽고 처리해야 하는 오버헤드가 있습니다.디스크 탐색, 디스크의 다른 위치에서 각 파일을 읽습니다.

기본 데이터를 더 빠르게 백업하려면 다음을 사용하세요.

dd bs=16M if=/dev/sda1 of=/another/filesystem

(이것은 RAID를 사용하지 않는다고 가정하므로 상황이 약간 바뀔 수 있습니다)

답변2

다음과 같이 lz4 압축과 함께 tar를 사용하십시오.

tar cvf - myFolder | lz4 > myFolder.tar.lz4

두 가지 장점을 모두 제공합니다(매우 우수한 압축 및 속도). 데이터에 바이너리 파일이 포함되어 있더라도 압축률은 약 3으로 예상됩니다.

추가 자료: 압축 알고리즘 비교 lz4 압축을 사용하는 방법

답변3

다른 사람들의 말을 반복하자면 백업되는 파일에 대해 더 많이 알아야 합니다. 여기서는 몇 가지 가정을 해보겠습니다.

tar 파일에 추가

디렉토리에 파일만 추가하는 경우(즉, 파일을 제거하지 않는 경우) 매번 파일을 다시 생성하는 대신 기존 tar 파일에 추가하세요. 명령에 새 파일 이름 대신 기존 아카이브 파일 이름을 지정하면 됩니다 tar(또는 이전 파일 이름을 제거하면 됩니다).

다른 디스크에 쓰기

기록 중인 동일한 디스크에서 데이터를 읽으면 성능이 저하될 수 있습니다. I/O 로드를 분산시키려면 다른 디스크에 쓰십시오. 아카이브 파일이 원본 파일과 동일한 디스크에 있어야 하는 경우 나중에 이동하십시오.

압축하지 마세요

@Yves가 말한 내용을 반복합니다. 백업 파일이 이미 압축된 경우 다시 압축할 필요가 없습니다. CPU 사이클만 낭비하게 됩니다.

답변4

아무도 덤프 및 복원에 대해 언급하지 않았다는 사실에 놀랐습니다. 그것보다 나을 것이다DD파일 시스템에 여유 공간이 있는 경우.

해당 파일 시스템에 따라 다른 도구가 필요할 수 있습니다.

  • 외부 2/3/4 -덤프그리고다시 덮다(팩덤프RH/데비안에서)
  • XFS-xfs 덤프그리고파일 시스템 복원(팩xfs 덤프RH/데비안에서)
  • ZFS-zfs 보내기그리고zfs 수신
  • BTRFS-BTRFS 보내기그리고BTRFS 수신

일부 프로그램에는 압축이 내장되어 있지 않습니다(덤핑 제외). 필요에 따라 stdout으로 파이프하고 Pigz를 사용합니다. ;-)

관련 정보