현재 저는 일부 정적 자산에 대해 3단계를 사용한 gzip
다음 s3cmd
S3 버킷(기술적으로는 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%.*}"' -- {} \;