블록이 포함된 S3 CP 명령에 변수 포함

블록이 포함된 S3 CP 명령에 변수 포함

S3 cp 명령에 일부 파일 이름을 포함하고 싶지만 계속 실패하는 시나리오가 있습니다. 다음은 내 명령입니다:-

DATE=$(date '+%Y%m%d')
/usr/local/bin/aws s3 cp "/test/copy" "s3://test-bucket/test/copy/" --include "TEST_$DATE.REQHE" --include "TEST_$DATE.ERRMSG_REQHE" 

명령을 실행하는 동안 다음 오류가 발생합니다.-

upload failed: ./ to s3://test-bucket/test/copy/ [Errno 21] Is a directory: '/test/copy'

명령이 작동하도록 수정하는 데 도움을 줄 수 있는 사람이 있습니까?

수동 명령의 출력:-

[root@server:/home/linux]$ /usr/local/bin/aws s3 cp /test/copy/ s3://test-bucket/test/copy/ --include "TEST_20211220.REQHE" --profile aws-s3 --sse aws:kms --sse-kms-key-id ab457654f-6562-43df-124l-4et75653bq12
upload failed: ../../test/copy to s3://test-bucket/test/copy/ [Errno 21] Is a directory: '/test/copy/'
[root@server:/home/linux]$ /usr/local/bin/aws s3 cp "/test/copy/" "s3://test-bucket/test/copy/" --include "TEST_20211220.REQHE" --profile aws-s3 --sse aws:kms --sse-kms-key-id ab457654f-6562-43df-124l-4et75653bq12
upload failed: ./../test/copy to s3://test-bucket/test/copy/ [Errno 21] Is a directory: '/test/copy/'
[root@server:/home/linux]$ /usr/local/bin/aws s3 cp "/test/copy" "s3://test-bucket/test/copy/" --include "TEST_20211220.REQHE" --profile aws-s3 --sse aws:kms --sse-kms-key-id ab457654f-6562-43df-124l-4et75653bq12
upload failed: ./../test/copy to s3://test-bucket/test/copy/ [Errno 21] Is a directory: '/test/copy/'

미리 감사드립니다

답변1

변수를 추가하는 것이 문제라고 생각하는 것 같습니다. 명령을 반복하되 변수를 제거하고 오늘 날짜(2021년 12월 20일)로 바꾸겠습니다.

/usr/local/bin/aws s3 cp "/test/copy" "s3://test-bucket/test/copy/" --include "TEST_20211220.REQHE" --include "TEST_20211220.ERRMSG_REQHE"

명령은 거의 확실히 같은 방식으로 실패할 것입니다(실제로 이를 확인하는 귀하의 의견에서). 그러므로 우리는 변수의 보간이 부적절하다는 결론을 내릴 수 있습니다.

오류 메시지를 확인하세요.

upload failed: […] [Errno 21] Is a directory: '/test/copy'

이는 경로가 /test/copy디렉터리이고 Amazon aws s3 cp명령이 디렉터리를 복사하지 않음을 알려줍니다. (오류 메시지가 소스를 가리키는지 아니면 대상을 가리키는지 완전히 명확하지 않습니다. 이름을 변경하면 모호함이 해결됩니다.) 디렉터리 이름을 뒤에 슬래시가 있든 없든 상관없습니다. 이는 여전히 디렉토리이므로 명령은 디렉토리를 복사하지 않습니다.

해결책은 디렉터리를 복사하지 않는 것입니다. 아마도 이 aws s3 cp명령은 파일을 복사할 것이지만 테스트할 명령에 액세스할 수 없습니다.

관련 정보