現在、私はいくつかの静的資産にステップ3を使用し、gzip
S3s3cmd
バケット(技術的にはDigital Ocean Spacesバケット)を使用しています。これが私がしたことです:
$ find . -type f -name '*.css' | xargs -I{} gzip -k -9 {}
$ find . -type f -name '*.css.gz' | xargs -I{} s3cmd put --acl-public --add-header='Content-Encoding: gzip' {} s3://mybucket/assets/{}
- ただし、拡張機能を削除するには、バケット内のすべての拡張機能を手動で変更する必要があります
.gz
。
手順3を手動で実行する必要がない方法はありますか?手順2で.gz
ターゲットから拡張機能を削除できるかどうかを知りたいです。しかし、元のファイルを私のサーバーに保存したいので、これは大きな問題です。
ベストアンサー1
ファイル名に対してシェル文字列操作を実行できるように、-exec
in操作を使用できます。find
パラメータ拡張を"${var%.*}"
使用して拡張を削除できます。以下は例です。
find . -type f -name '*.css.gz' -exec bash -c 's3cmd put --acl-public --add-header="Content-Encoding: gzip" "$1" "s3://mybucket/assets/${1%.*}"' -- {} \;