Linuxにて/var/www/html下にアップロードしたjpegからメタデータを自動的に消す

投稿者: | 12月 2, 2023

はじめに

Webサーバを公開する上で当たり前のことですが、jpegファイルにはGPSの位置情報などがメタデータとして含まれているのでメタデータを消すのは必須です。Wordpressの場合はプラグインを使用する手段などもありますが、よく分からなかったので、シェルスクリプトでの動作にしました。今回はUbuntuでの実行を想定しています。

仕組み

ファイルの変化を読み取るinotifywaitを使用して、アップロードされたjpegファイルを発見し、exiftoolでメタデータを消します。あとは、このスクリプトをサービスに追加し、自動起動するようにするだけです。

inotifywaitはinotify-toolsに含まれるので、apt等でexiftoolと共にインストールして下さい。

手順

以下のスクリプトをvim watch_and_erase_jpeg_meta.shなどで作成します。

#!/bin/bash

WATCHED_DIR="/var/www/html/"

# inotifywaitコマンドを使用してディレクトリを監視
inotifywait -m -r -e create --format '%w%f' "$WATCHED_DIR" | while read FILE
do
  # ファイル拡張子がjpgまたはjpegの場合のみ処理
        if [[ $FILE =~ \.jpg$ ]] || [[ $FILE =~ \.jpeg$ ]]; then
                echo "New JPEG file added: $FILE"
                exiftool -all= -overwrite_original "$FILE"
        fi
done

あとは、chmod +x watch_and_erase_jpeg_meta.shで実行権限をつけます。

サービスの登録の仕方ですが、sudo vim /etc/systemd/system/watch_and_erase_jpeg_meta.serviceで以下の文章を書きます。User=のところは、html/の書き込みを行うのに使用されているユーザを指定して下さい。

[Unit]
Description=Watch and Clean JPEG Files in /var/www/html/

[Service]
ExecStart=/home/ユーザー名/watch_and_erase_jpeg_meta.sh
Restart=always
User=www-data

[Install]
WantedBy=multi-user.target

あとは、

sudo systemctl daemon-reload
sudo systemctl start watch_and_erase_jpeg_meta.service

でスタートさせて、

sudo systemctl enablewatch_and_erase_jpeg_meta.service

で自動起動を設定します。ログは、

journalctl -u enablewatch_and_erase_jpeg_meta.service -f

で見れます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)