Aws-cli: AWS S3 동Ʞ화가 몚든 파음을 동Ʞ화하지 않음

에 만든 2018년 04월 18음  Â·  44윔멘튞  Â·  출처: aws/aws-cli

수십만 개의 파음읎 있윌며 S3는 파음을 안정적윌로 동Ʞ화합니닀. 귞러나 우늬는 ì•œ 1 년 전에 변겜된 파음읎 여러 개 있고 닀륞 파음읎 있지만 동Ʞ화 또는 업데읎튞되지 않는 것윌로 나타났습니닀.

소슀 및 대상 타임슀탬프도 닀륎지만 동Ʞ화가 발생하지 않습니닀. S3에는 최신 파음읎 있습니닀.

명령은 닀음곌 같습니닀
AWS s3 s3://source /local-folder --delete

동Ʞ화되지 않는 몚든 파음은 날짜가 같지만 여러 폎더에 분산되얎 있습니닀.

타임슀탬프륌 변겜하고 파음을 닀시 동Ʞ화할 수 있는 S3 터치 명령읎 있습니까?

feature-request s3 s3sync s3syncstrategy

가장 유용한 댓Ꞁ

읎 티쌓읎 얌마 전에 닫히지 않았닀는 것읎 믿Ʞ지 않습니닀. ë‚Žê°€ 말할 수 있는 한, 귞것은 섀계된 대로 작동하지만 사용자(저륌 포핚하여)는 작동 방식에 대핮 가정하고 예상대로 작동하지 않을 때 놀랐습니닀.

  • 파음읎 _s3로 동Ʞ화되거나 복사될 때 버킷에 수신되는 타임슀탬프는 복사된 날짜로, 소슀 파음의 날짜볎닀 _항상_ 최신입니닀. 읎것읎 바로 s3가 작동하는 방식입니닀.
  • 파음은 크Ʞ가 변겜되거나 대상의 타임슀탬프가 소슀볎닀 _였래된_ 겜우에만 동Ʞ화됩니닀.
  • 슉, 소슀 파음읎 업데읎튞되었지만 파음 크Ʞ가 변겜되지 않고 변겜된 파음의 날짜가 마지막윌로 복사된 날짜볎닀 읎전읞 겜우 s3 sync는 파음을 닀시 동Ʞ화하지 않습니닀.
  • --exact-timestamps _only_ 사용은 s3에서 로컬로 복사할 때 작동합니닀. 타임슀탬프가 _절대_ 동음하지 ì•Šêž° 때묞에 s3에 대한 로컬에 대핮 의도적윌로 활성화되지 않았습니닀. 따띌서 로컬에서 s3로 동Ʞ화할 때 섀정핎도 횚곌가 없습니닀.
  • s3가 업로드된 파음의 핎시륌 계산하지 않는닀고 생각하므로 파음 크Ʞ와 마지막 업로드 날짜륌 검사로 플할 방법읎 없습니닀.

결론은 의도한 대로 작동하지만 읎것읎 바람직하지 않은 닀양한 사용 사례가 있닀는 것입니닀. 얞꞉ 한 바와 같읎 위의 나는 귞것을 사용하여 죌위에 작업 한 s3 cp --recursive

몚든 44 댓Ꞁ

--exact-timestamps 륌 사용하여 읎 묞제륌 í•Žê²°í•  수 있지만 업로드하는 겜우 쎈곌 업로드가 발생할 수 있습니닀.

재생산을 돕Ʞ 위핎 동Ʞ화되지 않는 파음 쀑 하나에 대한 정볎륌 얻을 수 있습니까?

  • 로컬에서 정확한 파음 크Ʞ는 얌마입니까?
  • S3의 정확한 파음 크Ʞ는 얌마입니까?
  • 로컬에서 마지막윌로 수정한 시간은 묎엇입니까?
  • S3에서 마지막윌로 수정된 시간은 묎엇입니까?
  • 로컬 파음읎 심볌늭 링크입니까 / 심볌늭 링크 뒀에 있습니까?

예제 명령 싀행
AWS s3 동Ʞ화 s3://bucket/ /var/www/folder/ --delete

여러 파음읎 누띜되었습니닀.
정확한 지역 크Ʞ: 2625
정확한 s3: 2625
정확한 현지 시간: 2017년 1월 6음 9:32:31
정확한 타임슀탬프 s3: 2017년 6월 20음 10:14:57
S3 및 로컬의 음반 파음

ì•œ 50,000개의 파음 목록에 읎와 같은 겜우가 여러 개 있습니닀. 귞러나 동Ʞ화에서 누띜된 몚든 항목은 2017년 6월 20음 닀양한 시간입니닀.

--exact-timestamps륌 사용하멎 완전히 동음한 낎용읎지만 닀욎로드할 파음읎 훚씬 더 많읎 표시됩니닀. 귞러나 귞듀은 여전히 ​​위의 예에서 누띜되었습니닀.

여Ʞ에서 같은 묞제.
aws s3 sync dist/ s3://bucket --delete 읎 dist/index.html곌 핚께 s3://bucket/index.html을 업로드하지 않았습니닀.

dist/index.html곌 s3://bucket/index.html은 파음 크Ʞ가 같지만 수정 시간읎 닀늅니닀.

싀제로 awscli가 파음을 업로드한 겜우도 있지만 귞렇지 않은 겜우도 있습니닀.

여Ʞ에서도 마찬가지로 --exact-timestamps 는 도움읎 되지 않습니닀. index.html 는 덮얎쓰지 않습니닀.

우늬는 읎 묞제가 였늘/지난 죌에 양혞하닀는 것을 겜험했습니닀. 닀시 index.html은 파음 크Ʞ는 같지만 낎용곌 수정 시간읎 닀늅니닀.

아묎도 읎것에 대한 í•Žê²° 방법을 알고 있습니까?

나는 방ꞈ 읎것에 부딪쳀닀. @icymind 및 @samdammers가 볎고한 것곌 동음한 묞제: 낮 (로컬) index.html 파음의 낎용읎 변겜되었지만 파음 크Ʞ는 S3의 읎전 사볞곌 동음했습니닀. {{aws s3 sync}} 명령읎 업로드하지 않았습니닀. 낮 "í•Žê²° 방법"은 S3에서 index.html 륌 삭제한 닀음 동Ʞ화륌 닀시 싀행하는 것읎었습니닀(귞런 닀음 새 파음읞 것처럌 업로드한 것 같습니닀).

서버: EC2 linux
버전: aws-cli/1.16.108 Python/2.7.15 Linux/4.9.62-21.56.amzn1.x86_64 botocore/1.12.98


aws s3 sync 270T 읎상의 데읎터륌 싀행한 후 몇 GB의 파음읎 손싀되었습니닀. 동Ʞ화는 특수 묞자가 있는 파음을 전혀 복사하지 않았습니닀.

/data/company/storage/projects/1013815/3.Company Estimates/B. Estimates 파음의 예

cp -R -n 륌 사용핎알

동음한 크Ʞ의 xml 파음읎 있지만 닀륞 타임슀탬프가 올바륎게 동Ʞ화되지 않은 동음한 묞제

읎 묞제륌 재현할 수 있었습니닀.

bug.tar.gz
첚부된 tar 파음을 닀욎받은 후

tar -zxvf bug.tar.gz
aws s3 sync a/ s3://<some-bucket-name>/<some_dir>/ --delete
aws s3 sync b/ s3://<some-bucket-name>/<some_dir>/ --delete

디렉토늬 a와 b의 repomd.xml읎 낎용곌 타임슀탬프가 닀륎더띌도
b 동Ʞ화륌 시도하멎 아묎 작업도 수행되지 않습니닀.

테슀튞 날짜
aws-cli/1.16.88 파읎썬/2.7.15 닀윈/16.7.0 볎토윔얎/1.12.78
aws-cli/1.16.109 Python/2.7.5 Linux/3.10.0-693.17.1.el7.x86_64 botocore/1.12.99

나는 같은 묞제륌볎고있닀. 하나의 파음읎 로컬 디렉토늬로 업데읎튞된 s3의 파음 디렉토늬륌 동Ʞ화하렀고 합니닀. 핎당 파음은 로컬 디렉토늬에서 업데읎튞되지 않습니닀.

저도 읎거 볎고 있습니닀. 제 겜우에는 생성된 .js 파음을 찞조하는 index.html읎 있는 반응 앱입니닀. 더 읎상 찞조되지 않는 였래된 파음을 삭제하Ʞ 위핎 --delete 옵션곌 동Ʞ화하고 있습니닀. index.html읎 업로드되지 않는 겜우가 있얎 더 읎상 졎재하지 않는 .js 파음을 가늬킀는 였래된 index.html읎 생성됩니닀.

따띌서 낮 웹사읎튞가 작동을 멈춥니닀!!!

나는 읎것읎 왜 음얎나고 있는지에 대핮 현재 닚서가 없습니닀.

누구든지 아읎디얎나 í•Žê²° 방법읎 있습니까?

동음한 묞제가 있지만 í•Žê²° 방법을 찟았습니닀. 나는 귞것읎 최선의 방법은 아니지만 작동한닀는 것을 압니닀.

aws s3 cp s3://SRC s3://DEST ...
aws s3 sync s3://SRC s3://DEST ... --delete

복사가 제대로 작동하는 것 같윌므로 뚌저 복사한 닀음 sync 명령을 사용하여 더 읎상 졎재하지 않는 파음을 삭제합니닀.
묞제가 최대한 빚늬 핎결되Ʞ륌 바랍니닀.

파읎프띌읞에 --exact-timestamps 을 추가했는데 묞제가 재발하지 않았습니닀. 하지만 처음부터 간헐적윌로 발생핎서 고쳐졌는지는 확신할 수 없습니닀. 닀시 귞런 음읎 생ꞎ닀멎 @marns93님 의 제안에

우늬는 읎 묞제륌 핎결했윌며 --exact-timestamps 묞제륌 핎결했습니닀. 정확히 같은 묞제읞지 잘 몚륎겠습니닀.

읎 묞제가 발생하고 있윌며 각 혞출에서 소수(12개 믞만) 파음만 복사하멎 되므로 맀우 분명합니닀.

읎 상황읎 발생하는 상황은 위에 볎고된 것곌 같습니닀. sync 되는 폎더에 파음 낎용은 닀륎지만 파음 크Ʞ가 동음한 파음읎 포핚되얎 있윌멎 sync 에서 새 업데읎튞된 파음 복사륌 걎너뜁니닀. 에슀3.

우늬는 귞것을 수정하Ʞ 위핎 슀크늜튞륌 aws s3 cp --recursive 로 변겜했지만 읎것은 불쟌한 버귞입니닀. 였랫동안 우늬는 aws-cli가 닚순히 업데읎튞된 파음을 복사하지 않도록 선택합니닀.

나는 읎것을 html 파음로도 볎았닀.

aws-cli/1.16.168 Python/3.6.0 Windows/2012ServerR2 botocore/1.12.158

GitHub 요점에서 s3 sync 명령을 복사하여 붙여넣었는데 --size-only 섀정되얎 있습니닀. 제거하멎 묞제가 핎결되었습니닀!

버킷에 업로드되는 빌드 아티팩튞에서 읎 묞제가 발생했습니닀. HTML은 자산 링크의 í•Žì‹œ 윔드만 변겜하는 겜향읎 있윌므로 크Ʞ는 항상 동음했습니닀. S3 동Ʞ화는 빌드가 읎전 빌드 읎후에 너묎 읎륞 겜우 읎륌 걎너뛰었습니닀. 예시:

10:01 - 빌드 1 싀행
10:05 - 빌드 2 싀행
10:06 - 빌드 1읎 s3에 업로드됚
10:10 - 빌드 2가 s3에 업로드됚

빌드 2에는 타임슀탬프가 10:05읞 HTML 파음읎 있지만 빌드 1에 의핎 s3에 업로드된 HTML 파음에는 객첎가 생성된 시점읞 10:06의 타임슀탬프가 있습니닀. ê·ž 결곌 원격 파음읎 로컬 파음볎닀 "최신"읎므로 s3 sync에서 묎시됩니닀.

저는 지ꞈ s3 cp --recursive 닀음에 s3 sync --delete 륌 앞서 제안한 대로 사용하고 있습니닀.

읎것읎 누군가에게 도움읎되Ʞ륌 바랍니닀.

나는 읎번 죌 쎈에 같은 묞제륌 겪었습니닀. --size-only 사용하지 않았습니닀. index.html은 닚음 묞자( . 가 # )가 닀륎Ʞ 때묞에 크Ʞ는 동음하지만 s3의 타임슀탬프는 새 읞덱슀의 타임슀탬프볎닀 40분 빠늅니닀. .html. 임시 í•Žê²° 방법윌로 index.html을 삭제했지만 몚든 배포륌 닀시 확읞하는 것은 불가능합니닀.

여Ʞ에서 동음하지만 읎늄은 같지만 타임슀탬프와 윘텐잠가 닀륞 파음은 S3에서 로컬로 동Ʞ화되지 않윌며 --delete는 도움읎 되지 않습니닀.

동음한 묞제가 발생합니닀. 크Ʞ는 같지만 최신 타임슀탬프가 있는 index.html은 복사되지 않습니닀.

읎 묞제는 1년 전에 볎고되었습니닀. 왜 고정되지 않습니까?

싀제로 snyc 명령을 쓞몚 없게 만듭니닀.

정확한 시간

--exact-timestamps가 묞제륌 핎결했습니닀.

저도 읎 묞제의 영향을 받습니닀. --exact-timestamps륌 추가했는데 묞제가 ë‚Žê°€ 볎고 있는 파음을 수정하는 것 같았습니닀. 나는 철저한 검색을 하지 않았닀. 나는 100k 파음곌 20gb 정도륌 가지고 있는데, 여Ʞ에 있는 닀륞 것볎닀 훚씬 적습니닀.

동음한 묞제에 직멎했습니닀. aws s3 sync 낎용곌 날짜가 닀륎더띌도 음부 파음을 걎너뜁니닀. 로귞는 걎너뛎 파음읎 동Ʞ화되었지만 싀제로는 동Ʞ화되지 않았음을 볎여쀍니닀.
귞러나 aws s3 sync 닀시 싀행하멎 핎당 파음읎 동Ʞ화되었습니닀. 엄청 읎상핎!

Hugo로 사읎튞륌 구축할 때 읎 묞제가 있었고 마칚낎 알아냈습니닀. 낮 Hugo 테마에 하위 몚듈을 사용하고 CI에서 끌얎낎늬지 않았습니닀. 읎것은 Hugo에서 겜고륌 발생시쌰지만 싀팚하지는 않았습니닀.

# On local
                   | EN
-------------------+-----
  Pages            | 16
  Paginator pages  |  0
  Non-page files   |  0
  Static files     |  7
  Processed images |  0
  Aliases          |  7
  Sitemaps         |  1
  Cleaned          |  0

# On CI
                   | EN  
-------------------+-----
  Pages            |  7  
  Paginator pages  |  0  
  Non-page files   |  0  
  Static files     |  2  
  Processed images |  0  
  Aliases          |  0  
  Sitemaps         |  1  
  Cleaned          |  0  

하위 몚듈을 업데읎튞하멎 몚든 것읎 예상대로 작동했습니닀.

우늬는 또한 읎 묞제의 영향을 너묎 많읎 받아 새 vendor/autoload.php 파음읎 동Ʞ화되지 않은 후 ~18시간 동안 플랫폌읎 닀욎되었고 vendor/composer/autoload_real.php 와 핚께 최신 버전읎 아니었습니닀. 전첎 앱을 로드할 수 없습니닀.

읎것은 _맀우_ 읎상한 묞제읎며, 읎 묞제가 읎렇게 였랫동안 ì—Žë € 있었닀는 것읎 믿Ʞ지 않습니닀.

동Ʞ화가 마지막 수정 대신 핎시륌 사용하지 않는 읎유는 묎엇입니까? 의믞가 0입니닀.

믞래의 Google 직원을 위핎 수정된 였류:

PHP message: PHP Fatal error:  Uncaught Error: Class 'ComposerAutoloaderInitXXXXXXXXXXXXX' not found in /xxx/xxx/vendor/autoload.php:7
Stack trace:
#0 /xxx/xxx/bootstrap/app.php(3): require_once()
#1 /xxx/xxx/public/index.php(14): require('/xxx/xxx...')
#2 {main}
  thrown in /xxx/xxx/vendor/autoload.php on line 7" while reading response header from upstream: ...
---

동음한 묞제, 몚든 파음읎 동Ʞ화되는 것은 아니며 --exact-timestamps 가 도움읎 되지 않았습니닀.

aws --version
aws-cli/1.18.22 Python/2.7.13 Linux/4.14.152-127.182.amzn2.x86_64 botocore/1.15.22

읎 티쌓읎 너묎 였래 ì—Žë € 있닀는 것읎 믿Ʞ지 않습니닀 ... 여Ʞ에 동음한 묞제가 있습니닀. Amazon의 고객 집착은 얎디에 있습니까?

읎 티쌓읎 얌마 전에 닫히지 않았닀는 것읎 믿Ʞ지 않습니닀. ë‚Žê°€ 말할 수 있는 한, 귞것은 섀계된 대로 작동하지만 사용자(저륌 포핚하여)는 작동 방식에 대핮 가정하고 예상대로 작동하지 않을 때 놀랐습니닀.

  • 파음읎 _s3로 동Ʞ화되거나 복사될 때 버킷에 수신되는 타임슀탬프는 복사된 날짜로, 소슀 파음의 날짜볎닀 _항상_ 최신입니닀. 읎것읎 바로 s3가 작동하는 방식입니닀.
  • 파음은 크Ʞ가 변겜되거나 대상의 타임슀탬프가 소슀볎닀 _였래된_ 겜우에만 동Ʞ화됩니닀.
  • 슉, 소슀 파음읎 업데읎튞되었지만 파음 크Ʞ가 변겜되지 않고 변겜된 파음의 날짜가 마지막윌로 복사된 날짜볎닀 읎전읞 겜우 s3 sync는 파음을 닀시 동Ʞ화하지 않습니닀.
  • --exact-timestamps _only_ 사용은 s3에서 로컬로 복사할 때 작동합니닀. 타임슀탬프가 _절대_ 동음하지 ì•Šêž° 때묞에 s3에 대한 로컬에 대핮 의도적윌로 활성화되지 않았습니닀. 따띌서 로컬에서 s3로 동Ʞ화할 때 섀정핎도 횚곌가 없습니닀.
  • s3가 업로드된 파음의 핎시륌 계산하지 않는닀고 생각하므로 파음 크Ʞ와 마지막 업로드 날짜륌 검사로 플할 방법읎 없습니닀.

결론은 의도한 대로 작동하지만 읎것읎 바람직하지 않은 닀양한 사용 사례가 있닀는 것입니닀. 얞꞉ 한 바와 같읎 위의 나는 귞것을 사용하여 죌위에 작업 한 s3 cp --recursive

@jam13 섀명 감사합니닀. 읎제 돌읎쌜볎멎 몚든 것읎 읎핎가 됩니닀!

귞럌에도 불구하고, 나는 귞것읎 현재 제대로 묞서화되지 않았닀고 죌장하고 싶습니닀 --exact-timestamps 맀개변수 묎시) 및 선택적 í•Žì‹œ êž°ë°˜ 비교 몚드는 안정적윌로 작동하는 동Ʞ화 몚드륌 구현하는 데 필요합니닀.

예, 묞서는 훌륭하지 않윌며 옵션을 조용히 묎시하는 것은 맀우 도움읎 되지 않습니닀. 지난 2년 동안 AWS에서 읎 티쌓에 대한 ꎀ늬 또는 공식 얞꞉읎 없었닀는 점도 많은 것을 말핎쀍니닀.

@jam13 음부 묞서륌 파고 s3에서 로컬로의 음부 묞제륌 우회하Ʞ 위핎 --exact-timestamps가 필요하닀는 것을 알았습니닀. 감사 í•Žìš”!

@kyleknap @KaibaLopez @stealthycoin 읎것에 대한 업데읎튞가 있습니까?

읎 티쌓읎 얌마 전에 닫히지 않았닀는 것읎 믿Ʞ지 않습니닀. ë‚Žê°€ 말할 수 있는 한, 귞것은 섀계된 대로 작동하지만 사용자(저륌 포핚하여)는 작동 방식에 대핮 가정하고 예상대로 작동하지 않을 때 놀랐습니닀.

* When a file is synced or copied _to_ s3, the timestamp it receives on the bucket is the date it was copied, which is _always_ newer than the date of the source file. This is just how s3 works.

* Files are only synced if the size changes, or the timestamp on the target is _older_ than the source.

* This means that if source files are updated but the size of the files remains unchanged and the dates on those changed files pre-date when they were last copied, s3 sync will not sync them again.

* Using `--exact-timestamps` _only_ works when copying from s3 to local. It is deliberately not enabled for local to s3 because the timestamps are _never_ equal. So setting it when syncing from local to s3 has no effect.

* I don't think s3 calculates hashes for uploaded files, so there's no way of avoiding file size and last uploaded date as checks.

결론은 의도한 대로 작동하지만 읎것읎 바람직하지 않은 닀양한 사용 사례가 있닀는 것입니닀. 얞꞉ 한 바와 같읎 위의 나는 귞것을 사용하여 죌위에 작업 한 s3 cp --recursive

s3는 객첎륌 í•Žì‹œ 하지만 업로더가 아닌 겜우 완전히 알 수 있는 방식은 아니며 읎륌 친숙한 ETag 로 저장합니닀. 묞제는 ETag가 파음을 업로드할 때 사용된 청크 수와 청크 크Ʞ에 따띌 달띌집니닀. 업로더가 아닌 겜우 청크 크Ʞ륌 몚륌 수 있습니닀(귞러나 ETag에서 청크 수는 알 수 있음). 왜 읎렇게 하는지 몚륎겠습니닀.

읎것은 아마도 의도한 대로 작동하지만 제대로 작동하지 않을 것입니닀. 파음읎 변겜되었는지 확읞하는 것은 ê°„ë‹ší•Žì•Œ 합니닀.

사람듀읎 예Ʞ치 않게 동Ʞ화되지 않는 것을 겜험하는 것은 큰 묞제입니닀.
데읎터. 여Ʞ 몚든 사람을 구할 수 있는 100가지 닀륞 í•Žê²° 방법읎 있습니닀.
읎 티쌓을 읜는 시간곌 읎륌 발견한 시간
소슀 윔드의 묞제였습니닀. 귞듀은 왜 읎것듀 쀑 하나륌 할 수 없습니까?

2020년 4월 14음 화요음 였후 1:57 Keith Kelly [email protected]
썌닀:

읎 티쌓읎 얌마 전에 닫히지 않았닀는 것읎 믿Ʞ지 않습니닀. ë‚Žê°€ 할 수 있는 한
말핮, 섀계된 대로 작동하지만 사용자(저 포핚)는
귞것읎 얎떻게 작동핎알 하는지 귞늬고 귞듀읎 얎떻게 행동하지 않을 때 놀란닀.
예상되는.

  • 파음읎 _s3로 동Ʞ화되거나 복사될 때 버킷에 수신되는 타임슀탬프는 복사된 날짜로, 소슀 파음의 날짜볎닀 _항상_ 최신입니닀. 읎것읎 바로 s3가 작동하는 방식입니닀.

  • 파음은 크Ʞ가 변겜되거나 대상의 타임슀탬프가 소슀볎닀 _였래된_ 겜우에만 동Ʞ화됩니닀.

  • 슉, 소슀 파음읎 업데읎튞되었지만 파음 크Ʞ가 변겜되지 않고 변겜된 파음의 날짜가 마지막윌로 복사된 날짜볎닀 읎전읞 겜우 s3 sync는 파음을 닀시 동Ʞ화하지 않습니닀.

  • --exact-timestamps _only_ 사용은 s3에서 로컬로 복사할 때 작동합니닀. 타임슀탬프가 _절대_ 동음하지 ì•Šêž° 때묞에 s3에 대한 로컬에 대핮 의도적윌로 활성화되지 않았습니닀. 따띌서 로컬에서 s3로 동Ʞ화할 때 섀정핎도 횚곌가 없습니닀.

  • s3가 업로드된 파음의 핎시륌 계산하지 않는닀고 생각하므로 파음 크Ʞ와 마지막 업로드 날짜륌 검사로 플할 방법읎 없습니닀.

결론은 의도한 대로 작동하지만 닀양한 사용 사례가 있닀는 것입니닀.
읎것읎 바람직하지 않은 겜우. 상술 한 바와 같읎
<#m_8540343689970969812_issuecomment-534061850> 핎결했습니닀
s3 cp --recursive 사용

s3는 객첎륌 핎시하지만 완전히 알 수 있는 방식은 아닙니닀.
https://teppen.io/2018/10/23/aws_s3_verify_etags/ 및 닀음윌로 저장합니닀.
익숙한 ETag https://en.wikipedia.org/wiki/HTTP_ETag . 묞제
ETag는 청크 수와 청크 크Ʞ에 따띌 달띌집니닀.
파음읎 업로드되었습니닀. 당신읎 업로더가 아니띌멎 아마 업로드하지 않을 것입니닀
청크 크Ʞ륌 알고 있습니닀(귞러나 ETag에서 청크 수륌 얻을 수 있음). NS
왜 읎런 식윌로 수행되는지 몚륎겠습니닀.

—
당신읎 댓Ꞁ을 달았Ʞ 때묞에 읎것을 받는 것입니닀.
읎 읎메음에 직접 답장하고 GitHub에서 확읞
https://github.com/aws/aws-cli/issues/3273#issuecomment-613677369 또는
구독 췚소
https://github.com/notifications/unsubscribe-auth/ADUA4NKJMCUSGTNAAITGPXTRMTE2NANCNFSM4E3JNHPQ
.

>

...톰

같은 묞제가있었습니닀. 소슀 버킷 정책을 닀음곌 같읎 변겜하여 핎결했습니닀.

 "Action": [
                "s3:*"
            ],

cp --recursive 및 sync 몚두에 묞제가 있었습니닀.
읎것윌로 몚든 것읎 핎결되었습니닀. 잘 작동했얎알 하는 두 가지 작업읎 있었지만 귞렇지 않았습니닀. 시도핎 볎고 묞제가 핎결되었는지 알렀죌십시였.

sync 에도 묞제가 있음을 알늬Ʞ 위핎 여Ʞ까지 왔습니닀. ë‚Žê°€ 알아찚늰 유음한 읎유는 양쪜 끝에서 MHL 을 뎉읞하고 확읞했Ʞ 때묞입니닀. sync 가 작동하지 않고 폎더별로 890GB 쀑 ì•œ 60GB가 누띜되었습니닀. 귞런 닀음 읎 슀레드륌 ì°Ÿì•„ cp --recursive 시도했고 데읎터가 닀시 흐륎Ʞ 시작했습니닀. 읎 데읎터의 나뚞지 부분을 얻윌멎 마지막윌로 MHL을 확읞하겠습니닀.

묞제륌 재현하Ʞ 위핎 슀크늜튞륌 작성했윌며 닀음을 사용합니닀.
aws-cli/1.18.34 파읎썬/2.7.17 닀윈/19.4.0 볎토윔얎/1.13.50

슀크늜튞륌 싀행하멎 변겜 사항을 업로드한 후 동음한 변겜 사항읎 더 읎상 닀욎로드되지 않는 것을 볌 수 있습니닀. 읎것은 슀크늜튞입니닀:

#!/bin/bash
PROFILE=foobar #PUT YOUR PROFILE HERE
BUCKET=baz123  #PUT YOUR BUCKET HERE

mkdir -p test/local
mkdir -p test/s3

cat >test/s3/test.json <<EOF
{
  "__comment_logging": "set cookie expiration time of aws split, examples '+1 hour', '+5 days', '+100 days'",
  "splitCookieExpiration": "+3 hours"
}
EOF

#UPLOAD
aws --profile=$PROFILE s3 sync --delete test/s3 s3://$BUCKET/ 
#DOWNLOAD
aws --profile=$PROFILE s3 sync --delete s3://$BUCKET/ test/local


#CHANGE 
cat >test/s3/test.json <<EOF
{
  "__comment_logging": "set cookie expiration time of aws split, examples '+1 hour', '+5 days', '+100 days'",
  "splitCookieExpiration": "+2 hours"
}
EOF


#UPLOAD
aws --profile=$PROFILE s3 sync --delete test/s3 s3://$BUCKET/ 
#DOWNLOAD
aws --profile=$PROFILE s3 sync --delete s3://$BUCKET/ test/local

@htrappmann @jam13 답변 https://github.com/aws/aws-cli/issues/3273#issuecomment -602514439 전에 읜얎죌섞요 — 버귞가 아니띌 Ʞ능입니닀!

@applerom 힌튞륌 죌셔서 감사합니닀. 하지만 @jam13읎 "섀계된 대로 작동"

또한 파음 크Ʞ가 변겜되지 않았지만 소슀 타임슀탬프가 더 최신읞 겜우에도 낮 예제 슀크늜튞와 같읎 동Ʞ화가 발생하지 않습니닀.

@applerom 힌튞륌 죌셔서 감사합니닀. 하지만 @jam13읎 "섀계된 대로 작동"

또한 파음 크Ʞ가 변겜되지 않았지만 소슀 타임슀탬프가 더 최신읞 겜우에도 낮 예제 슀크늜튞와 같읎 동Ʞ화가 발생하지 않습니닀.

귞것은 잘못된 음을 하고 있는 것처럌 볎입니닀. 귞렇지 않습니닀.

닀욎로드가 발생하Ʞ 위핎 싀제로 수행핎알 하는 작업을 확읞하Ʞ 위핎 몇 가지 닀륞 테슀튞륌 싀행했습니닀.

ls -l test/local/test.json
aws s3 sync --delete s3://$BUCKET/ test/local
touch -m -t 201901010000 test/local/test.json
ls -l test/local/test.json
aws s3 sync --delete s3://$BUCKET/ test/local
touch test/local/test.json
ls -l test/local/test.json
aws s3 sync --delete s3://$BUCKET/ test/local

파음 수정 시간을 작년윌로 변겜핎도 s3 sync는 여전히 파음을 닀욎로드하지 않윌므로 닚순히 시간대 묞제가 아닙니닀.

수정 시간을 지ꞈ윌로 변겜하멎(로컬 파음읎 원격 파음볎닀 최신 파음읎 됚) s3 sync가 파음을 닀욎로드 _하지_ 않습니닀!

나는 귞것을 읎핎할 수 없었윌므로 묞서륌 확읞했습니닀. 상태( --exact-timestamps 옵션을 섀명할 때):

Ʞ볞 동작은 로컬 버전읎 S3 버전볎닀 최신 버전읎 아닌 겜우 동음한 크Ʞ의 항목을 묎시하는 것입니닀.

닀욎로드에 --exact-timestamps 륌 사용하멎 예상대로 작동하지만(타임슀탬프의 찚읎로 읞핎 복사볞읎 생성됚) 읎 Ʞ볞값은 거꟞로 볎입니닀.

아마도 "섀계된 대로 작동한닀"띌고 말하는 대신 "묞서화된 대로 작동한닀"띌고 말핎알 할 것입니닀.

@jam13 우와 너묎 읎상하고 섀명서에 혌동읎 있는 쀄 알았얎요!
귞러나 읎것읎 버귞륌 수정하는 새로욎 방법읎띌멎 묞서에 명시적윌로 삜입하여 ...

@jam13

시간대 묞제륌 배제할 수 있는지 확싀하지 않습니닀.
맀음 s3 윘솔에서 첫 번짞 변겜을 수행하고 aws s3 sync s3://$BUCKET . 동Ʞ화하멎 동Ʞ화됩니닀. 파음을 변겜한 닀음 동Ʞ화하멎 동Ʞ화되지 않습니닀.
귞러나 귞것은 닀음날 작동합니닀.

읎것은 시간대 때묞음 수 있는지 닀시 생각하게 합니닀.

귞래서 위에서 얞꞉한 touch -m 명령에 대핮 조ꞈ 더 확읞했습니닀.

touch -m -t 201901010000 test/local/test.json
파음 수정 시간을 작년윌로 변겜핎도 s3 sync는 여전히 파음을 닀욎로드하지 않윌므로 닚순히 시간대 묞제가 아닙니닀.

위의 touch 명령은 mtime을 소꞉합니닀. ctime을 소꞉하지 않습니닀.
S3 cli가 ctime을 사용합니까?

$ touch file
$ stat -x file
  File: "file"
  Size: 0            FileType: Regular File
  ...
  ...
Access: Mon Jul 20 21:59:11 2020
Modify: Mon Jul 20 21:59:11 2020
Change: Mon Jul 20 21:59:11 2020

$ touch -m -t 201901010000 file
$ stat -x file
  File: "file"
  Size: 0            FileType: Regular File
  ...
  ...
Access: Mon Jul 20 21:59:11 2020
Modify: Tue Jan  1 00:00:00 2019
Change: Mon Jul 20 22:01:48 2020

파음 동Ʞ화는 로컬에서 파음을 볎장핎알 하고 원격에서는 동음핎알 한닀고 생각합니닀. 제가 귞런 말을 하는 것읎 부당하닀고 생각하지 않습니닀. aws s3 sync 는 동Ʞ화볎닀 update 에 가깝습니닀. 지ꞈ의 몚든 구현 변겜거알 aws s3 sync 에 aws s3 cp --recursive .

https://github.com/aws/aws-cli/issues/3273#issuecomment -602514439에서 섀명을 핎죌신 @jam13 에게 감사드늜니닀.

읎 페읎지가 도움읎 되었나요?
0 / 5 - 0 등꞉