{{< details >}}
- Tier: 基础版,专业版,旗舰版
- Offering: 私有化部署
{{< /details >}}
EXIF 数据会自动从 JPG 或 TIFF 图片上传中去除。
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 |
整数 | 只处理具有相等或更大 ID 的上传 |
stop_id |
整数 | 只处理具有相等或更小 ID 的上传 |
dry_run |
布尔 | 不删除 EXIF 数据,仅检查是否存在 EXIF 数据。默认为 true
|
sleep_time |
浮点数 | 处理每个图片后暂停的秒数。默认为 0.3 秒 |
uploader |
字符串 | 仅对给定上传者的上传运行清理:FileUploader 、PersonalFileUploader 或 NamespaceFileUploader
|
since |
日期 | 仅对较新于给定日期的上传运行清理。例如,2019-05-01
|
如果上传过多,可以通过以下方式加快清理速度:
- 将
sleep_time
设置为较低的值。 - 并行运行多个 Rake 任务,每个任务有一个独立的上传 ID 范围(通过设置
start_id
和stop_id
)。
要从所有上传中删除 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 任务的输出中有错误消息。典型原因包括文件在存储中丢失或不是有效图片。