tar 속도를 높이는 방법, 압축하지 않고 패키지만 빌드하기

tar 속도를 높이는 방법, 압축하지 않고 패키지만 빌드하기

1,000,000개의 파일이 포함된 Linux 시스템에 큰 2TB 폴더가 있습니다. tar를 사용하여 패키지를 만들고 싶습니다. tar 파일의 크기는 신경쓰지 않으므로 데이터를 압축할 필요가 없습니다. 어떻게 tar속도를 높일 수 있나요? 패키지를 만드는 데 한 시간이 걸렸습니다 tar -cf xxx.tar xxx/. 저는 강력한 28코어 CPU와 500GB RAM을 가지고 있습니다. tar다중 스레드로 실행할 수 있는 방법이 있습니까 ?

또는 서로 다른 폴더 간에, 그리고 서로 다른 서버 간에 대용량의 작은 파일을 전송하는 좋은 방법이 있습니까? 내 파일 시스템은 ext4입니다.

답변1

@Kusalananda가 의견에서 말했듯이 tar는 디스크에 바인딩되어 있습니다. 당신이 할 수 있는 가장 좋은 방법 중 하나는 출력을 별도의 디스크에 저장하여 쓰기 때문에 읽는 속도가 느려지지 않도록 하는 것입니다.

다음 단계가 네트워크를 통해 파일을 이동하는 것이라면 먼저 네트워크를 통해 tar 파일을 생성하는 것이 좋습니다.

$ tar -cf - xxx/ | ssh otherhost 'cat > xxx.tar'

이런 방식으로 로컬 호스트는 파일을 읽기만 하면 되며 tar가 소비하는 쓰기 대역폭을 수용할 필요가 없습니다. tar의 디스크 출력은 네트워크 연결 및 해당 디스크 시스템에 흡수됩니다 otherhost.

답변2

또는 서로 다른 폴더 간에, 그리고 서로 다른 서버 간에 대용량의 작은 파일을 전송하는 좋은 방법이 있습니까? 내 파일 시스템은 ext4입니다.

저는 SSH를 통해 Rsync를 자주 사용합니다. 옵션과 함께 사용하면 파일 권한, 심볼릭 링크 등이 유지됩니다 --archive.

rsync -av /mnt/data <server>:/mnt

이 예에서는 /mnt/data로컬 디렉터리와 해당 내용을 원격 서버에 복사합니다 /mnt. 연결을 설정하기 위해 ssh를 호출합니다. 라인의 어느 쪽에도 rsync 데몬이 필요하지 않습니다.

작업은 2개의 로컬 디렉터리 사이에서 수행되거나 원격에서 로컬로 수행될 수도 있습니다.

관련 정보