백업용 압축 방식: gz에서 zstd로 마이그레이션

zstd is pretty common now and compresses better and is faster than gz. Maybe it is worth changing to this for backups.

considering all the discourse instances around the world, this could be a big saver in disk and transfer.

Choosing Between gzip, Brotli and zStandard Compression | Paul Calvano.

4개의 좋아요

I think this is actually a good idea. Putting a pr-welcome tag on this.

2개의 좋아요

I’d be curious to know the average weight ratio between compressible and already compressed data in a Discourse backup[1], and how much data (in %) would be saved using zstd.

It’s not the same feature request, but it’s also about backup compression so I’m crossposting this:

I wouldn’t be surprised if the percentage was about the same on all my Discourse forums.


  1. Of course, some forums rely very much on image uploads, and some won’t even allow file uploads ↩︎

가끔 백업 과정이 추가 부하로 인해 가용성 문제를 일으키기도 합니다. 그래서 오늘 zstd로 간단한 실험을 해 보았습니다.

Discourse 백업에서 사용된 gzip (레벨 4)과 zstd (기본 레벨 3, 최대 19)으로 동일한 73GiB 크기의 dump.sql 파일을 압축했을 때의 결과는 다음과 같습니다:

압축 크기: 15.8% 더 작음 (.zst 파일이 .gz 파일 크기의 84%)
압축 시간 (-T1): 71% 빠름 (gzip 소요 시간의 29%)
압축 시간 (-T0): 89% 빠름 (gzip 소요 시간의 11%)

결과가 다를 수 있습니다(YMMV). 여러 번 실행하지 않았고, 제 개인용 머신(6코어)에서 실행했으며, 다른 작업도 동시에 수행 중이었고, 그 외 여러 요인이 있었기 때문에 정밀한 측정을 목표로 하지는 않았습니다. 그럼에도 불구하고 이점이 명확하다고 생각합니다.

-T0 옵션이 모든 사용자에게 반드시 좋은 선택일지는 확실하지 않습니다. Discourse 자체를 위한 여유 공간을 확보하는 것이 좋은 아이디어라고 생각하기 때문에, 더 공정한 비교를 위해 -T1 옵션을 사용한 샘플을 제시했습니다.

상호 이익(win-win)이 될 것 같고, Discourse의 호스팅 인프라에도 상당한 영향을 미칠 것으로 보입니다. 다만, PR을 작성할 실력은 없으므로, 발견한 내용만 공유합니다.

2개의 좋아요

Docker 내부의 tar이 --zstd 압축을 지원하는 것을 확인했습니다.

수정: 아, 아니었습니다. tar은 이를 지원하지만, ‘zstd’ 유틸리티가 없습니다. apt-get install로 설치할 수 있습니다.

2개의 좋아요