업로드 정리 Rake 태스크
GitLab v19.5Offering: GitLab Self-Managed
요약
JPG 또는 TIFF 이미지를 업로드하면 EXIF 데이터가 자동으로 제거됩니다. EXIF 데이터에는 민감한 정보(예: GPS 위치)가 담길 수 있으므로, 이전 버전의 GitLab에 업로드된 기존 이미지에서도 EXIF 데이터를 제거할 수 있습니다.
JPG 또는 TIFF 이미지를 업로드하면 EXIF 데이터가 자동으로 제거됩니다.
EXIF 데이터에는 민감한 정보(예: GPS 위치)가 담길 수 있으므로, 이전 버전의 GitLab에 업로드된 기존 이미지에서도 EXIF 데이터를 제거할 수 있습니다.
사전 요구 사항#
이 Rake 태스크를 실행하려면 시스템에 exiftool 이 설치되어 있어야 합니다. GitLab 설치 방식별로 다음과 같습니다.
-
Linux 패키지로 설치한 경우 추가 작업이 필요하지 않습니다.
-
소스 컴파일 방식으로 설치한 경우
exiftool이 설치되어 있는지 확인합니다.# Debian/Ubuntu sudo apt-get install libimage-exiftool-perl # RHEL/CentOS sudo yum install perl-Image-ExifTool
기존 업로드에서 EXIF 데이터 제거#
기존 업로드에서 EXIF 데이터를 제거하려면 다음 명령을 실행합니다.
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:uploads:sanitize:remove_exif
기본적으로 이 명령은 "드라이 런" 모드로 실행되며 EXIF 데이터를 제거하지 않습니다. 정리가 필요한 이미지가 있는지, 몇 건인지 확인하는 용도로 사용할 수 있습니다.
Rake 태스크는 다음 매개변수를 허용합니다.
| 매개변수 | 타입 | 설명 |
|---|---|---|
start_id |
integer | 해당 ID 이상의 업로드만 처리합니다 |
stop_id |
integer | 해당 ID 이하의 업로드만 처리합니다 |
dry_run |
boolean | EXIF 데이터를 제거하지 않고 존재 여부만 확인합니다. 기본값은 true |
sleep_time |
float | 각 이미지를 처리한 뒤 일시 정지할 시간(초). 기본값은 0.3초 |
uploader |
string | 지정한 업로더의 업로드에 대해서만 정리를 실행합니다: FileUploader, PersonalFileUploader, NamespaceFileUploader |
since |
date | 지정한 날짜 이후의 업로드에 대해서만 정리를 실행합니다. 예: 2019-05-01 |
업로드가 너무 많다면 다음 방법으로 정리 속도를 높일 수 있습니다.
sleep_time을 더 낮은 값으로 설정합니다.- 업로드 ID 범위를 나누어(
start_id와stop_id설정) 여러 Rake 태스크를 병렬로 실행합니다.
모든 업로드에서 EXIF 데이터를 제거하려면 다음을 사용합니다.
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:uploads:sanitize:remove_exif[,,false,] 2>&1 | tee exif.log
ID가 100에서 5000 사이인 업로드에서 EXIF 데이터를 제거하고 파일마다 0.1초씩 일시 정지하려면 다음을 사용합니다.
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:uploads:sanitize:remove_exif[100,5000,false,0.1] 2>&1 | tee exif.log
출력이 길어지는 경우가 많아 exif.log 파일에 기록됩니다.
업로드 정리에 실패하면 Rake 태스크 출력에 오류 메시지가 표시됩니다. 일반적인 원인은 스토리지에 파일이 없거나 유효한 이미지가 아닌 경우입니다.
문제가 있으면 오류 출력과 가능한 경우 이미지를 첨부해 이슈 제목에 'EXIF' 접두사를 붙여 보고합니다.