2013年2月2日土曜日

"s3cmd (& gnu paralell)"で多重度を変えてS3にアップロードしてみる

スズキです。

下記の記事を書いたところ、
"s3cmd (& xargs)"で多重度を変えてS3にアップロードしてみる
Facebookのコメントより、次のように、ありがたいアドバイスをいただいたので、













も早速、試してみました!


ダウンロード先は下記(http://ftp.gnu.org/gnu/parallel/)となります。


インストール前の準備

# yum -y install make
...
# cd /usr/local/src/
# curl -OL http://ftp.gnu.org/gnu/parallel/parallel-20130122.tar.bz2
...
# bunzip2 parallel-20130122.tar.bz2
# tar xvf parallel-20130122.tar
...
# cd parallel-20130122

"./configure"の実施

# ./configure 
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating config.h
config.status: config.h is unchanged

"make"の実施

# make
make  all-recursive
make[1]: ディレクトリ `/usr/local/src/parallel-20130122' に入ります
Making all in src
make[2]: ディレクトリ `/usr/local/src/parallel-20130122/src' に入ります
pod2man --release='20130122' --center='parallel' \
  --section=1 ./parallel.pod > ./parallel.1
pod2man --release='20130122' --center='parallel' \
  --section=1 ./sem.pod > ./sem.1
pod2man --release='20130122' --center='parallel' \
  --section=1 ./sql > ./sql.1
pod2man --release='20130122' --center='parallel' \
  --section=1 ./niceload.pod > ./niceload.1
pod2html ./parallel.pod > ./parallel.html
rm -f ./pod2htm*
pod2html ./sem.pod > ./sem.html
rm -f ./pod2htm*
pod2html ./sql > ./sql.html
rm -f ./pod2htm*
pod2html ./niceload.pod > ./niceload.html
rm -f ./pod2htm*
make[2]: ディレクトリ `/usr/local/src/parallel-20130122/src' から出ます
make[2]: ディレクトリ `/usr/local/src/parallel-20130122' に入ります
make[2]: ディレクトリ `/usr/local/src/parallel-20130122' から出ます
make[1]: ディレクトリ `/usr/local/src/parallel-20130122' から出ます

"make install"の実施

# make install
Making install in src
make[1]: ディレクトリ `/usr/local/src/parallel-20130122/src' に入ります
make[2]: ディレクトリ `/usr/local/src/parallel-20130122/src' に入ります
 /bin/mkdir -p '/usr/local/bin'
 /usr/bin/install -c parallel sem sql niceload '/usr/local/bin'
 /bin/mkdir -p '/usr/local/share/doc/parallel'
 /usr/bin/install -c -m 644 parallel.html sem.html sql.html niceload.html parallel.texi sem.texi sql.texi niceload.texi '/usr/local/share/doc/parallel'
 /bin/mkdir -p '/usr/local/share/man/man1'
 /usr/bin/install -c -m 644 parallel.1 sem.1 sql.1 niceload.1 '/usr/local/share/man/man1'
make[2]: ディレクトリ `/usr/local/src/parallel-20130122/src' から出ます
make[1]: ディレクトリ `/usr/local/src/parallel-20130122/src' から出ます
make[1]: ディレクトリ `/usr/local/src/parallel-20130122' に入ります
make[2]: ディレクトリ `/usr/local/src/parallel-20130122' に入ります
make[2]: `install-exec-am' に対して行うべき事はありません.
make[2]: `install-data-am' に対して行うべき事はありません.
make[2]: ディレクトリ `/usr/local/src/parallel-20130122' から出ます
make[1]: ディレクトリ `/usr/local/src/parallel-20130122' から出ます

コマンドの確認

# parallel --version
GNU parallel 20130122
Copyright (C) 2007,2008,2009,2010,2011,2012 Ole Tange and Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
GNU parallel comes with no warranty.

Web site: http://www.gnu.org/software/parallel

When using GNU Parallel for a publication please cite:

O. Tange (2011): GNU Parallel - The Command-Line Power Tool, 
;login: The USENIX Magazine, February 2011:42-47.

"s3cmd"を用いてアップロード

# time find -name "test-*" | parallel -P 8 s3cmd --no-progress put {} s3://www.suz-lab.com/tmp/
File './test-000030' stored as 's3://www.suz-lab.com/tmp/test-000030' (10485760 bytes in 1.0 seconds, 10.06 MB/s) [1 of 1]
...
File './test-000007' stored as 's3://www.suz-lab.com/tmp/test-000007' (10485760 bytes in 5.5 seconds, 1854.66 kB/s) [1 of 1]

real 0m9.085s
user 0m5.421s
sys 0m2.848s

冒頭で紹介したブログ記事の
time find -name "test-*" | xargs -L1 -P8 -i s3cmd --no-progress put {} s3://www.suz-lab.com/tmp/
と同様の処理(多重度)をしています。(同様に"t1.micro”です)

いろいろドキュメント読んでると、"xargs"より"gnu parallel"の方がクラウド的かも...
--------
http://www.suz-lab.com

0 コメント: