๋ฐฉ๊ธ ๋ค์์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ๊ฐ ํฌํจ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณต์ฌํ๋ ค๊ณ ํ์ต๋๋ค.
gsutil -m cp -r ๋๋ ํ ๋ฆฌ gs://my-bucket
dir์์ ๋ฒํท์ผ๋ก ์ต์์ ํ์ผ๋ง ๋ณต์ฌํ์ต๋๋ค.
๋๋ ์ฌ์ฉํ๊ณ ์๋ค :
gsutil ๋ฒ์ : 4.27
์ฒดํฌ์ฌ: 522455e2d24593ff3a2d3d237eefde57 (ํ์ธ)
๋ณดํ ๋ฒ์ : 2.47.0
ํ์ด์ฌ ๋ฒ์ : 2.7.6(๊ธฐ๋ณธ๊ฐ, 2016๋
10์ 26์ผ, 20:30:19) [GCC 4.8.4]
OS: Linux 4.4.0-83-์ผ๋ฐ
๋ค์ค ์ฒ๋ฆฌ ๊ฐ๋ฅ: True
ํด๋ผ์ฐ๋ SDK ์ฌ์ฉ: False
Cloud SDK ์๊ฒฉ ์ฆ๋ช
์ gsutil์ ์ ๋ฌ: False
๊ตฌ์ฑ ๊ฒฝ๋ก: /usr/local/google/home/mfschwartz/.boto_prod_oauth
gsutil ๊ฒฝ๋ก: /usr/local/google/home/mfschwartz/gsutil/gsutil
์ปดํ์ผ๋ crcmod: True
ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ํตํด ์ค์น: False
ํธ์ง ๊ฐ๋ฅํ ์ค์น: ๊ฑฐ์ง
๋ชจ๋ ํ์ ๋๋ ํ ๋ฆฌ๊ฐ ๋ค์ ๋ ์กฐ๊ฑด ์ค ํ๋๋ฅผ ์ถฉ์กฑํ๋ ๊ฒฝ์ฐ:
๊ทธ๋ฌ๋ฉด ์๋ํ ๋๋ก ์๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ ํ์ ๋๋ ํ ๋ฆฌ๊ฐ ์ผ๋ฐ ํ์ผ์ด ์๋ ๋น symlink ๋๋ ํ ๋ฆฌ์ธ ๊ฒฝ์ฐ ๋ฒ๊ทธ์ฒ๋ผ ๋ณด์ ๋๋ค(๋น๋ก ์ ์ด๋ฐ ์ผ์ด ๋ฐ์ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง).
์ด๊ฒ์ ์ฌํํ ์ ์๋ ํ์ผ ํธ๋ฆฌ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น?
ํํค์น ํ ๋ณต์ฌ๋ฅผ ์๋ํ ์ต์์ ๋๋ ํ ๋ฆฌ์ ์๋ชป๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ์ผ์ด ๋ฐ์ํ๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ํต์ฌ ๋ฌธ์ ๋ ์ด ์กฐ๊ฑด์ด ๋ฐ์ํ๋ฉด gsutil์ด ํฌ๊ธฐํ๋ค๋ ๊ฒ์ ๋๋ค(๊ทธ๋์ ์ค์ ๋ก ๋ฌธ์ ๋ ํ์ ๋๋ ํ ๋ฆฌ์ ๊ด๋ จ์ด ์์ต๋๋ค. ๋ฐฉ๊ธ ๋ฐ์ํ ๋ด๊ฐ ์๋ ์ฒซ ๋ฒ์งธ ํ์ ๋๋ ํ ๋ฆฌ๋ณด๋ค ๋จผ์ symlink๊ฐ ๋ฐ์ํ๋ค๊ณ ๋ณด๊ณ ํ ๊ฒฝ์ฐ).
์ฌ์ ์์ผ๋ก ์ผ๋ถ ํ์ผ๋ณด๋ค ๋จผ์ ์๋ชป๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ ์๋ ์ฌ๋ฌ ํ์ผ์ด ํฌํจ๋ Unix์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ Unix cp ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ํ์ผ์ ๋ณต์ฌํ๋ ค๊ณ ํ๋ฉด ์๋ชป๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ์ ๋ํด ๋ถํํ์ง๋ง ๋ณต์ฌ๋ ์๋ฃ๋ฉ๋๋ค. ๋ค๋ฅธ ํ์ผ:
% mkdir ์ฌํ
% ํฐ์น ์ฌํ/{1,3,4}
% ln -s /broken repro/2
% mkdir ์๋ก์ด
% cp ์ฌํ/* ์ ๊ท
cp: 'repro/2'๋ฅผ ๋ํ๋ผ ์ ์์: ํด๋น ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ต๋๋ค.
% ls ์๋ก์ด
1 3 4
gsutil์ด Unix ๋ช ๋ น ์กฐ์๊ณผ ์ต๋ํ ์ ์ฌํ๊ฒ ๋์ํ๋๋ก ํ๋ ์ฐ๋ฆฌ์ ์ง์นจ ์์น์ ๊ณ ๋ คํ ๋ gsutil์ ๊นจ์ง ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ง๋ ํ์๋ ์ ์ฌํ๊ฒ ๊ณ์ ์งํ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋น์ทํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. gsutil์ด ๋ด ํ์ ๋๋ ํ ๋ฆฌ ์ค ์ผ๋ถ๋ฅผ ๋ณต์ฌํ์ง ์์ต๋๋ค. ์ง์ -c
๋์๋ง์ ํ์๋์ง ์์ต๋๋ค๊ฐ (๋ด๊ฐ ์ฌ์ฉ -m
๋๋์กฐ์ฐจ ํ์ค ์ง์ ํ๊ณ ์์ง ์๋ค, ๊ทธ๋์ ์ด์จ๋ -c
ํ์๋ฅผ). ํ์ ๋๋ ํ ๋ฆฌ๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ ์๋๋๋ค. cp๋ ์๋ชป๋ ํ์ผ์ ๋๋ฌํ๋ฉด ์ค์ง๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋ํ ์ ๋ก๋ํ ํ์ ๋๋ ํ ๋ฆฌ ์ค ํ๋๋ฅผ ์ง์ ๊ฐ๋ฆฌํค๋ฉด ์๋ํ๋ค๊ณ ์ธ๊ธํด์ผ ํฉ๋๋ค. ๊ทธ๋์ ๋๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง์ ๋ํด ๊ธธ์ ์์์ต๋๋ค.
gsutil rsync -D
์๋ํ๋ฉด ๋๊ธฐํํ๋ ๋์ ๋ค์ ์คํ์ด ํ์๋ฉ๋๋ค.
DEBUG: Exception stack trace:
Traceback (most recent call last):
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/__main__.py", line 590, in _RunNamedCommandAndHandleExceptions
user_project=user_project)
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/command_runner.py", line 372, in RunNamedCommand
return_code = command_inst.RunCommand()
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/commands/rsync.py", line 1536, in RunCommand
diff_iterator = _DiffIterator(self, src_url, dst_url)
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/commands/rsync.py", line 939, in __init__
raise CommandException('Caught non-retryable exception - aborting rsync')
CommandException: CommandException: Caught non-retryable exception - aborting rsync
CommandException: Caught non-retryable exception - aborting rsync
-U
๋ฐ -e
๋ฅผ ์ง์ ํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ต๋๋ค. ์ด๋ค ํ์ผ์ด cp ๋ฐ rsync์ ์ค๋ฅ๋ฅผ ๋ฐ์์์ผฐ๋์ง ๋ชจ๋ฅด์ง๋ง -c
์ธํด ์ค๋ฅ์๋ ๋ถ๊ตฌํ๊ณ cp๊ฐ ๊ณ์ ์คํ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๋ ์ข ๋ ์ ์ฉํ ํผ๋๋ฐฑ์ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ํ์ผ์ ์๋ณํ๊ณ ์ฌ์ฉ์๊ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
gsutil cp -r gs://some loc_dir
๋ชจ๋ gsutil์ ์ต์ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธํ ํ
ํ์ธ, ๊ทธ ์ ๋์ฌ
gsutil cp -r -U -e -c
๋ฌธ์ ๋ฅผ ํด๊ฒฐ
์ ๋์ - gsutil์ /src ์๋์ ๋๋ ํ ๋ฆฌ์ ์๋ ํ์ผ์ ๊ฑด๋๋๋๋ค.
gsutil -m cp -U -e -r /src gs://bucket/prefix/
gsutil ๋ฒ์ : 4.46
ํธ์ง: gsutil cp / rsync๋ ๊ฒฝ๊ณ ๋ ์ค๋ฅ ๋ฉ์์ง ์์ด ์ง์
๊ถํ์ด ์๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฌด์ํฉ๋๋ค.
๋น ํ์ ๋๋ ํฐ๋ฆฌ ๋ณต์ฌ ๋ฐฉ๋ฒ.. gsutil์ ํ์ผ์ด ์๋ ํ์ ๋๋ ํฐ๋ฆฌ๋ง ๋ณต์ฌํ๊ณ ๋น ํ์ ๋๋ ํฐ๋ฆฌ๋ ๋ฌด์ํ๊ณ ๋์ ๋ฒํท์ ์์ฑํ์ง ์์ต๋๋ค. ๋์์ฃผ์ธ์
@prabhat-diwaker gsutil์ ๋น ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ฑด๋๋ฐ๋ฉฐ ์ด๋ ์๋๋ ๋์์ ๋๋ค.
@prabhat-diwaker gsutil์ ๋น ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ฑด๋๋ฐ๋ฉฐ ์ด๋ ์๋๋ ๋์์ ๋๋ค.
gsutil์ ๋น ํด๋ ๋๋ ์ต์ํ ๋ค๋ฅธ ํด๋๋ ํฌํจํ์ง๋ง ํ์ผ์ ํฌํจํ์ง ์์ ํด๋๋ฅผ ์ ๋ก๋ํ ์ ์๋ ์ต์ ์ด ์์ต๋๊น?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
๋ชจ๋ gsutil์ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ ํ
ํ์ธ, ๊ทธ ์ ๋์ฌ
๋ฌธ์ ๋ฅผ ํด๊ฒฐ