cron等でシェルを複数回実行した時、多重起動するとまずいので、それを回避するスクリプト。 業務上必要だったので作ってみた。 #!/bin/sh SCRIPT_PID="/home/takase/work/run_script.pid" if [ -f $SCRIPT_PID ]; then PID=`cat $SCRIPT_PID ` if (ps -e | awk '{print $1}' | grep $PID >/dev/null); then exit fi fi echo $$ > $SCRIPT_PID (この辺にバッチの処理) rm $SCRIPT_PIDpidでプロセスの有無を確認しているので起動中は2重に実行されないし、 何か理由があって落ちてた場合は再実行される。 後はcrontabにこのシェルを設定してやればOK
このケースでは15並列が最も速かったです。 環境(画像の大きさや数、マシンのスペック、ネットワーク速度)によって、最適な並列数は変わってくると思います。 いろいろ試してみてください。 ソースコード モダンPerlじゃなくてすいません。 upload.pl #!/usr/bin/perl package Amazon::S3::Uploader::File; use strict; use warnings; use base qw( Class::Accessor ); __PACKAGE__->mk_accessors( qw(local_path remote_dir bucket ) ); sub new { my $class = shift; my $path = shift; my $remote_dir = shift; my $bucket = shift; bless {
s3cmd というツールを使うと、ディレクトリの中身を丸ごと(再帰的に)アップロードすることができます。 使い方は非常に簡単で、これだけです。 $ s3cmd put --recursive /path/to/mydir s3://bucketname/foo/bar/ または $ s3cmd put --recursive /path/to/mydir/ s3://bucketname/foo/bar/mydir/ 1行目と2行目は同じ意味です。 (ローカルディレクトリ名の末尾のスラッシュに要注意。rsyncの場合と同じです。) コマンドラインやシェルスクリプトなどから実行するときは非常に便利です。 よかったら試してみてください。 s3cmd 公式サイト: http://s3tools.org/s3cmd ただ欠点が1つあって、大量のファイルをアップロードしようとすると非常に時間がかかり
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く