{{< 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 字符串 仅对给定上传者的上传运行清理:FileUploaderPersonalFileUploaderNamespaceFileUploader
since 日期 仅对较新于给定日期的上传运行清理。例如,2019-05-01

如果上传过多,可以通过以下方式加快清理速度:

  • sleep_time 设置为较低的值。
  • 并行运行多个 Rake 任务,每个任务有一个独立的上传 ID 范围(通过设置 start_idstop_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 任务的输出中有错误消息。典型原因包括文件在存储中丢失或不是有效图片。