๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ฒํท ๊ฐ์ ๋๊ธฐํํ ๋:
AWS s3 ๋๊ธฐํ s3://bucket1 s3://bucket2
"๋๊ธฐํ"์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก bucket2์ ํ์ผ์ด bucket1์ ํ์ผ๊ณผ ๋์ผํ ๊ถํ์ ๊ฐ์ง ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
๋์ ๊ธฐ๋ณธ ๊ถํ๋ง ์์ต๋๋ค.
๋ชจ๋ ํ์ผ์ ๋์ผํ ๊ถํ์ด ์์ต๋๊น? ์ง๊ธ์ sync
์ ํจ๊ป --acl
sync
๋ช
๋ น์ ์คํํ์ฌ ๊ถํ์ ์ค์ ํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ๋ฌ๋ ํ์ฌ ๋ค๋ฅธ ์ ํ์ ์ธ์ ์์ด sync
๋ช
๋ น์ ์คํํ๋ฉด ๊ถํ์ ์ฐพ์ง ์๊ณ ๊ฐ์ฒด๊ฐ ์ ์ก๋ ๋ ์๋ ๊ฐ์ฒด์ ๋์ผํ ๊ถํ์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ถ๊ฐ์ ์ธ ์ธ์/๊ธฐ๋ฅ์ ์ถ๊ฐํด์ผ ํ ๊ฒ์
๋๋ค.
์๋์ - ๋ชจ๋ ํ์ผ์ ๋์ผํ ๊ถํ์ด ์๋ ๊ฒฝ์ฐ --acl ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ํนํ ๊ถํ์ด ์๋ก ๋ค๋ฅธ ์์ฒ ๊ฐ์ ํ์ผ์ด ์๊ณ ๋จ์ํ ํ์ผ ๋ณต์ฌ๋ณธ์ด ์๋ ๋ฒํท ๊ฐ์ ์ง์ ํ ๋๊ธฐํ๋ฅผ ์ํ ๋ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ ๋ฐ๋์ ์์ด์ผ ํฉ๋๋ค.
ํ์ผ๋ณ๋ก ๊ถํ์ ์ป๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๊น? ๊ทธ๋์ ์ด๊ฒ์ ์ถฉ๋ถํ ์ฝ๊ฒ ์คํฌ๋ฆฝํ ํ ์ ์์ต๋๊น?
๋์์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์, ๊ฐ ๊ฐ์ฒด์ ๋ํด aws s3api get-object-acl
๋ฅผ ์คํํ๋ฉด. ๋น์ ์ CL์ ์ป์ ์ ์์ต๋๋ค. ๋ค์์ ๋ช
๋ น์ ๋ํ ๋ฌธ์์
๋๋ค.
http://docs.aws.amazon.com/cli/latest/reference/s3api/get-object-acl.html
์๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ํ์ง๋ง ์ด ๊ธฐ๋ฅ์ ๋๊ธฐํ์์ ์ฌ์ ํ ํฌ๊ฒ ๊ฐ์ฌํ ๊ฒ์ ๋๋ค. ๊ธฐ๋ณธ ์ค์ ์ด ์๋ ๊ฒฝ์ฐ --preserve-s3-acl ํ๋๊ทธ๋ง ์์ผ๋ฉด ๋ฉ๋๋ค.
๊ด์ฐฎ์์. ๊ธฐ๋ฅ์ ๊ณ ๋ คํ ๊ฒ์
๋๋ค. ์ํํ์ง ์์ ์ด์ ๋ ์์ ์์ฒด์ ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. s3 ๋ฒํท์ ๊ฐ์ฒด๋ฅผ ํ์ธํ๊ธฐ ์ํด ListObjects
ํธ์ถํ์ง๋ง ๊ฐ ๊ฐ์ฒด์ ๋ํ acl์ ๋ฐํํ์ง๋ ์์ต๋๋ค. ์ฐจ๋ก๋ก ๋์๊ฐ์ ๋์ด๋ ๋ชจ๋ ๊ฐ์ฒด์ ๋ํด GetObjectAcl
๋ฅผ ์คํํด์ผ ํ๋ฉฐ ๋ฒํท์ ์์ฒ ๊ฐ์ ํญ๋ชฉ์ด ์๋ ๊ฒฝ์ฐ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
๊ถํ์ด ๋๊ธฐํ๋์ง ์์์์ ๋ฐ๊ฒฌํ๋ ๋ฐ ์๊ฐ์ด ์ข ๊ฑธ๋ ธ๊ธฐ ๋๋ฌธ์ ๊ถํ์ด ๋๊ธฐํ๋์ง ์์ ๋ฐ์ดํฐ๋ง ๋์ค์ ๋ค๋ฅธ ์ฌ๋์ ์๊ฐ์ ์ ์ฝํ ์ ์๋ค๋ ์ ์ ์ธ๊ธํ๊ธฐ ์ํด s3์์ s3 sync๋ก์ ๋ฌธ์๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
๋ค์ ํ๋ฒ ๊ฐ์ฌํฉ๋๋ค
์ด๊ฒ์ ๋ํ ์ด๋ค ์ ๋ฐ์ดํธ?
๋ช ์ฃผ ์ ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ ๋ฆฌํ์คํธ(#1535)๋ฅผ ์ถ๊ฐํ์ต๋๋ค( copy
์ ๊ฐ์ ๋ค๋ฅธ S3-to-S3 ์ ์ก). ํฌํจ๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น?
์๋ ํ์ธ์, ์ค๋๋ ์ค๋ ๋๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง ๊ถํ ์ ํ๋ณ๋ก ํ๋์ ๋๊ธฐํ๋ฅผ ํตํด ์ด๊ฒ์ ํด๊ฒฐํ์ต๋๋ค. ๊ฒฐ๋ก : --exclude ๋ฐ --include๋ฅผ ์ฌ์ฉํ์ฌ ํค ์ด๋ฆ์ผ๋ก ๋๊ธฐํ๋ฅผ ํํฐ๋งํ ์ ์์ผ๋ฉฐ ๊ฐ ๋๊ธฐํ์ ACL์ ์ง์ ํ ์๋ ์์ต๋๋ค... ๋ฐ๋ผ์ ๋ค๋ฅธ ๊ถํ์ ์ค์ ํด์ผ ํ๋ ํค ํจํด์ด ์๋ ๊ฒฝ์ฐ ๋ค์์ ์คํํ์ญ์์ค. ๋ค๋ฅธ ACL ์ต์ ๊ณผ ํจ๊ป ์ฌ๋ฌ ๋ฒ sync ๋ช ๋ น์ ์คํํด์ผ ํฉ๋๋ค. ์ด์์ ์ด์ง๋ ์์ง๋ง ์๋ํฉ๋๋ค!
AWS ํ์ ์๊ฒฌ์ด ์์ผ์ญ๋๊น?
๋ฐฑ์ ์ฉ์ผ๋ก git ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ S3๋ก ํธ์ํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ค์ ๋๊ธฐํํ๋ฉด ๋ชจ๋ ์ข ๋ฅ์ ๊ถํ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค.
๋ด ๋ชจ๋ ์คํ ๊ฐ๋ฅํ bin ํ์ผ์ ๋ ์ด์ ์คํ ๊ฐ๋ฅํ์ง ์์ผ๋ฉฐ git status๋ ์ด์ ๋ํด ๋น๋ช ์ ์ง๋ฆ ๋๋ค.
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1, ์, ๋ง์นจํ๊ฐ ์๋ ๋ฒํท ์ด๋ฆ์ด ์์๊ณ ํด๋ผ์ฐ๋ ํ๋ฐํธ๋ฅผ ํตํด https์ ํธํ๋๋๋ก ๋ณ๊ฒฝํด์ผ ํ์ต๋๋ค. ์ฌ๋ฐ๋ฅด๊ฒ ๋ช
๋ช
๋ ์ ๋ฒํท์ ๋๊ธฐํ๋์์ต๋๋ค. ํ์ผ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ๊ถํ์ ๋ํด ์ฝ์ด๋ณด์ธ์. ๊ฐ์ฒด ์์ค ๊ถํ์ด ์์ต๋๋ค. ๋ฒํท์ ๋ชจ๋ ๊ฐ์ฒด ์์ค ๊ถํ์ ๋ณ๊ฒฝํ๋ ๋ช
๋ น์ด ์์ต๋๋ค. ์งํ ๋ฐฉ๋ฒ์ด ๊ถ๊ธํฉ๋๋ค. aws GUI๋ฅผ ํตํ ๊ถํ์ ๋ ๋ฒํท์์ ์ค์ ๋ก ๋์ผํ๊ฒ ๋ณด์ด์ง๋ง cli๋ฅผ ํตํด ์ก์ธ์ค ์ ์ด ๋ชฉ๋ก์ ์กฐํํ ๋ ์๋ณธ ๋ฒํท์ ๋ณต์ฌ๋์ง ์์ ์ถ๊ฐ ํผ๋ถ์ฌ์๊ฐ ์์์ ์ ์ ์์ต๋๋ค.
{
"์์ฌ์": {
"์ ํ": "๊ทธ๋ฃน",
"URI": " http://acs.amazonaws.com/groups/global/AllUsers "
},
"๊ถํ": "์ฝ๊ธฐ"
}
์๋ ํ์ธ์!
AWS CLI์ ๊ด๋ จ๋ ๊ธฐ๋ฅ ์์ฒญ์ ์ํด UserVoice ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ณผ์ ์์ GitHub์์ ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋ฒ๊ทธ ๋ณด๊ณ ์๋ก ๋ํ๋ฅผ ํฌ์ํ์ง ์๊ณ ๋ ๊ฐ์ฅ ๊ด์ฌ ์๋ ๊ธฐ๋ฅ์ ๋ ์ฝ๊ฒ ๊ฒ์ํ๊ณ ์ง์์ ํ์ํ ์ ์์ผ๋ฏ๋ก ๊ฐ์ฅ ์ค์ํ ๊ธฐ๋ฅ์ ์ป์ ์ ์์ต๋๋ค.
๋น ๋ฅธ UserVoice ์ ๋ฌธ์(์์ง ์ต์ํ์ง ์์ ๊ฒฝ์ฐ): ์์ด๋์ด๊ฐ ๊ฒ์๋ ํ ์ฌ๋๋ค์ ์์ด๋์ด์ ํฌํํ ์ ์์ผ๋ฉฐ ์ ํ ํ์ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์ ์์ ์ง์ ์๋ตํฉ๋๋ค.
GitHub์์ ๊ธฐ์กด ๊ธฐ๋ฅ ์์ฒญ์ ๊ฐ์ ธ์์ต๋๋ค. ์ฌ๊ธฐ์์ ์ด ๋ฌธ์ ๋ฅผ ๊ฒ์ํ์ธ์!
๊ทธ๋ฆฌ๊ณ ๊ฑฑ์ ํ์ง ๋ง์ญ์์ค. ์ด ๋ฌธ์ ๋ ํ์์ ์ํด GitHub์ ๊ณ์ ์กด์ฌํฉ๋๋ค. ์๋ณธ ๊ฒ์๋ฌผ์ UserVoice๋ก ํ ์คํธ ์ ์ฉ์ผ๋ก ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ GitHub ๋ฌธ์ ์ ๋ํด ์ด๋ฏธ ์กด์ฌํ๋ ์๊ฒฌ๊ณผ ํ ๋ก ์ ๊ณ์ ์ผ๋์ ๋ ๊ฒ์ ๋๋ค.
GitHub๋ ๋ฒ๊ทธ ๋ณด๊ณ ๋ฅผ ์ํ ์ฑ๋๋ก ๋จ์ ๊ฒ์ ๋๋ค.
๋ค์ ํ ๋ฒ, ์ด ๋ฌธ์ ๋ ์ด์ https://aws.uservoice.com/forums/598381-aws-command-line-interface ์์ ์ ๋ชฉ์ ๊ฒ์ํ์ฌ ์ฐพ์ ์ ์์ต๋๋ค.
-AWS SDK ๋ฐ ๋๊ตฌ ํ
์ด ํญ๋ชฉ์ ํนํ UserVoice( https://aws.uservoice.com/forums/598381-aws-command-line-interface/suggestions/33168325-s3-sync-does-not-preserve-permissions-across-) ์์ ์ฐพ์ ์ ์์ต๋๋ค.
@ASayre - ์ด ํ ๋ก ์ ํ๊ธฐ์ ์๋ชป๋ ์ฅ์์ผ ์ ์์ง๋ง Amazon์ด GitHub์ UserVoice์์ AWS CLI์ ๋ํ ํ ๋ก ์ ์ด์ํ๊ฒ ๋ถํ ํ ์ด์ ๋ฅผ ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น?
๊ธฐ๋ฅ ์์ฒญ์ ์ฌ๊ธฐ GitHub์์ ์ ์ ํด ๋ณด์ ๋๋ค. ๊ธฐ๋ฅ ์์ฒญ์ผ๋ก๋ง ํํฐ๋งํ๊ณ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๊ฒ์ผ๋ก ์ ๋ ฌํ๋ ๊ฒ์ ๋น๊ต์ ์ฝ์ต๋๋ค.
GitHub๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋ ์กฐ๊ฐ์ ์ฝ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ค๋ฅธ ๋ฌธ์ (์: #1060, ์ด์ ๊ด๋ จ๋ ๋ฌธ์ )๋ฅผ ์ฐธ์กฐํ ์ ์์ผ๋ฉฐ, AWS CLI ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ์๋น ๋ถ๋ถ์ด ์ด๋ฏธ ์ฌ๊ธฐ GitHub์์ ํ์ฑํ๋์ด ์์ต๋๋ค.
์ปค๋ฎค๋ํฐ ํผ๋๋ฐฑ์ ๊ธฐ๋ฐ์ผ๋ก GitHub ๋ฌธ์ ์ ๊ธฐ๋ฅ ์์ฒญ์ ๋ฐํํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
๋๊ตฌ๋ ์ง์ด ์์ ์ ์ํํ๊ธฐ ์ํด ์ ์ ํ ์๋ฃจ์ ์ ์๊ฐํด ๋์ต๋๊น? ๋ง์ด ํ์ํ ๊ธฐ๋ฅ.
์์ ๋ต๋ณ์ *๋ฅผ ๊ณต๊ฐ์ ์ผ๋ก ์ฝ๋๋ก ๊ฐ์ ํฉ๋๋ค. ๊ถํ์ด ์ ์ง๋์ง ์์ต๋๋ค.
์งํ ์ํฉ์ ์ด๋ป์ต๋๊น? ๋๋ ๋ํ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด์ sync --include/exclude๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
์ด ์ผ์ ํ๋ ๋ฐ ๋์ ์ฃผ๊ณ ์ถ์ ์ฌ๋์ด ์์ต๋๊น?
4๋ ์ด ์ง๋ฌ์ง๋ง ์ด ์ ๋ชฝ์ ๊ณ์๋๊ณ ์๋ค. ์ฒ๋ง ๊ฐ ์ด์์ ํ์ผ์ด ์์ผ๋ฉฐ ๋ณต์ฌํ๋ ๋์ ๊ถํ์ด ๋ชจ๋ ์์ค๋์์ต๋๋ค. ๊ถํ์ ์ ์งํ๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฐ๋จํ ์ผ์ด ์ด๋ป๊ฒ ๊ฐ๋ฅํฉ๋๊น?
+1
์ฌ๊ธฐ์ ์ค๋ ๋ค๋ฅธ ์ฌ๋์ ์ํด ์ ๋ ์ด๊ฒ์ ์ฌ์ฉํ์ฌ ํ ๋ฒํท์ ๋ค๋ฅธ ๋ฒํท์ผ๋ก ๋ณต์ฌํ๊ณ ACL์ ์ ์งํ ์ ์์์ต๋๋ค. https://github.com/cobbzilla/s3s3mirror/tree/2.1-stable
๋ํ ํจ์ฌ ๋ ๋น ๋ฆ ๋๋ค.
์ ๋ฅผ ์ํด ํ์ฌ ์์ ํด๋๋ฅผ ๋ฐฑ์ ํ๊ธฐ ์ํด s3๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ git repo๊ฐ โโํฌํจ๋๋ฉฐ ๋ชจ๋ ๊ถํ ๋ณ๊ฒฝ ํ์๋ ๋ด repo๊ฐ โโ๊ณ์ ๋๋ผ๊ณ ์์ต๋๋ค.
๋์๊ฒ ํด๊ฒฐ์ฑ ์ ๋ฆฌํฌ์งํ ๋ฆฌ๋น ๊ถํ๋ง ์ฌ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๊ฒ์ด์์ต๋๋ค. AWS๊ฐ ์ฐ๋ ๊ธฐ๋ฅผ ๊ณ ์น ๋๊น์ง ์ด๊ฒ์ด ๋๋ฅผ ์ํ ์๋ฃจ์ ์ ๋๋ค.
git config --global --add alias.permission-reset '!git diff -p -R --no-color | grep -E "^(diff|(old|new) mode)" --color=never | git apply'
์ฌ๊ธฐ์์ ํด๊ฒฐ์ฑ ์ ์ฐพ์์ต๋๋ค.
์๋ ํ์ธ์,
๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์๋ง์ ๊ฐ์ฒด๊ฐ ํฌํจ๋ ๋ฒํท์ด ์๊ณ ๊ทธ ์ค ์ผ๋ถ๋ ๊ณต๊ฐ์ ์ผ๋ก ์ก์ธ์คํ ์ ์์ด์ผ ํฉ๋๋ค. ACL์ ๋ณด์กดํ๋ฉด์ ์ ์ฒด ๋ฒํท์ ๋ค๋ฅธ ๋ฒํท์ ๋ณต์ฌํด์ผ ํ์ผ๋ฉฐ ๋ฌผ๋ก ACL์ ์๋์ผ๋ก ์ค์ ํ๋ ค๋ฉด ์์ฒญ๋ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
ํ ๋ฒํท์์ ๋ค๋ฅธ ๋ฒํท์ผ๋ก ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ๊ณ ์ด์ ๋ํ ACL๋ ์ค์ ํ๋ ์ด ๊ฐ๋จํ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ด์ฌ์ผ๋ก ๋ง๋ค์์ต๋๋ค.
์์ ๋กญ๊ฒ ์ดํด๋ณด์ธ์:
https://github.com/terminator9999/aws-s3-bucket-copy/
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ถํ์ด ๋๊ธฐํ๋์ง ์์์์ ๋ฐ๊ฒฌํ๋ ๋ฐ ์๊ฐ์ด ์ข ๊ฑธ๋ ธ๊ธฐ ๋๋ฌธ์ ๊ถํ์ด ๋๊ธฐํ๋์ง ์์ ๋ฐ์ดํฐ๋ง ๋์ค์ ๋ค๋ฅธ ์ฌ๋์ ์๊ฐ์ ์ ์ฝํ ์ ์๋ค๋ ์ ์ ์ธ๊ธํ๊ธฐ ์ํด s3์์ s3 sync๋ก์ ๋ฌธ์๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
๋ค์ ํ๋ฒ ๊ฐ์ฌํฉ๋๋ค