<p>gsutil cp -R dir gs://my-bucket์€ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ณต์‚ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.</p>

์— ๋งŒ๋“  2017๋…„ 09์›” 13์ผ  ยท  10์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: GoogleCloudPlatform/gsutil

๋ฐฉ๊ธˆ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํฌํ•จ๋œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ณต์‚ฌํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.

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
ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ์„ค์น˜: ๊ฑฐ์ง“

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

gsutil cp -r gs://some loc_dir

๋ชจ๋“  gsutil์„ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ ํ›„
ํ™•์ธ, ๊ทธ ์ ‘๋‘์‚ฌ

gsutil cp -r -U -e -c

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ

๋ชจ๋“  10 ๋Œ“๊ธ€

๋ชจ๋“  ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋‹ค์Œ ๋‘ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ฅผ ์ถฉ์กฑํ•˜๋Š” ๊ฒฝ์šฐ:

  • ํฌํ•จ๋œ ํŒŒ์ผ ์—†์Œ(๋” ๋งŽ์€ ์ค‘์ฒฉ ๋””๋ ‰ํ† ๋ฆฌ ๋˜๋Š” ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ์ œ์™ธ)
  • ์‹ฌ๋ณผ๋ฆญ ๋งํฌ์ด๊ฑฐ๋‚˜ ์–ด๋–ป๊ฒŒ ๋“  ์ผ๋ฐ˜ ํŒŒ์ผ๋กœ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์˜๋„ํ•œ ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ผ๋ฐ˜ ํŒŒ์ผ์ด ์žˆ๋Š” ๋น„ 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์— ๋นˆ ํด๋” ๋˜๋Š” ์ตœ์†Œํ•œ ๋‹ค๋ฅธ ํด๋”๋Š” ํฌํ•จํ•˜์ง€๋งŒ ํŒŒ์ผ์€ ํฌํ•จํ•˜์ง€ ์•Š์€ ํด๋”๋ฅผ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰