ììë§ ê°ì íìŒìŽ ììŒë©° S3ë íìŒì ìì ì ìŒë¡ ëêž°íí©ëë€. ê·žë¬ë ì°ëŠ¬ë ìœ 1 ë ì ì ë³ê²œë íìŒìŽ ì¬ë¬ ê° ìê³ ë€ë¥ž íìŒìŽ ìì§ë§ ëêž°í ëë ì ë°ìŽížëì§ ìë ê²ìŒë¡ ëíë¬ìµëë€.
ìì€ ë° ëì íìì€í¬íë ë€ë¥Žì§ë§ ëêž°íê° ë°ìíì§ ììµëë€. S3ìë ìµì íìŒìŽ ììµëë€.
ëª
ë ¹ì ë€ì곌 ê°ìµëë€
AWS s3 s3://source /local-folder --delete
ëêž°íëì§ ìë 몚ë íìŒì ë ì§ê° ê°ì§ë§ ì¬ë¬ íŽëì ë¶ì°ëìŽ ììµëë€.
íìì€í¬í륌 ë³ê²œíê³ íìŒì ë€ì ëêž°íí ì ìë S3 í°ì¹ ëª ë ¹ìŽ ììµëê¹?
--exact-timestamps
륌 ì¬ì©íì¬ ìŽ ë¬žì 륌 íŽê²°í ì ìì§ë§ ì
ë¡ëíë ê²œì° ìŽê³Œ ì
ë¡ëê° ë°ìí ì ììµëë€.
ì¬ìì°ì ëêž° ìíŽ ëêž°íëì§ ìë íìŒ ì€ íëì ëí ì 볎륌 ì»ì ì ììµëê¹?
ìì ëª
ë ¹ ì€í
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ì ê³ ê° ì§ì°©ì ìŽëì ììµëê¹?
ìŽ í°ìŒìŽ ìŒë§ ì ì ë«íì§ ììë€ë ê²ìŽ ë¯¿êž°ì§ ììµëë€. ëŽê° ë§í ì ìë í, ê·žê²ì ì€ê³ë ëë¡ ìëíì§ë§ ì¬ì©ì(ì 륌 í¬íšíì¬)ë ìë ë°©ìì ëíŽ ê°ì íê³ ììëë¡ ìëíì§ ìì ë ëëìµëë€.
--exact-timestamps
_only_ ì¬ì©ì 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 ìê² ê°ì¬ë늜ëë€.
ê°ì¥ ì ì©í ëêž
ìŽ í°ìŒìŽ ìŒë§ ì ì ë«íì§ ììë€ë ê²ìŽ ë¯¿êž°ì§ ììµëë€. ëŽê° ë§í ì ìë í, ê·žê²ì ì€ê³ë ëë¡ ìëíì§ë§ ì¬ì©ì(ì 륌 í¬íšíì¬)ë ìë ë°©ìì ëíŽ ê°ì íê³ ììëë¡ ìëíì§ ìì ë ëëìµëë€.
--exact-timestamps
_only_ ì¬ì©ì s3ìì ë¡ì»¬ë¡ ë³µì¬í ë ìëí©ëë€. íìì€í¬íê° _ì ë_ ëìŒíì§ ìêž° ë묞ì s3ì ëí ë¡ì»¬ì ëíŽ ìëì ìŒë¡ íì±íëì§ ìììµëë€. ë°ëŒì ë¡ì»¬ìì s3ë¡ ëêž°íí ë ì€ì íŽë íšê³Œê° ììµëë€.ê²°ë¡ ì ìëí ëë¡ ìëíì§ë§ ìŽê²ìŽ ë°ëì§íì§ ìì ë€ìí ì¬ì© ì¬ë¡ê° ìë€ë ê²ì ëë€. ìžêž í ë°ì ê°ìŽ ìì ëë ê·žê²ì ì¬ì©íì¬ ì£Œìì ìì í
s3 cp --recursive