- PR -

サーバ間でSCPするファイルのwrite中のreadについて

1
投稿者投稿内容
ささ
会議室デビュー日: 2009/01/05
投稿数: 2
投稿日時: 2009-01-05 19:54
サーバA(Linux)、サーバB(UNIX)で、サーバAからサーバBに対してSCPでファイルを
コピーし、サーバBは周期的にそのファイルを読み出して処理するという動作を考えて
います。
write中の中途半端な内容でreadされないような仕組みを考えているのですが、
何かいい方法はないでしょうか?
サーバAからサーバBに対しての書き込みのコストは極力抑えたい、サーバBの読み込みは
それほ速度は求めないといった条件です。
また、ファイル自体は1行でせいぜい500文字程度のcsvファイルです。
何か排他処理が必要ない方法またはサーバB側だけでwriteが完了しているか判定する
方法はないでしょうか?
Ay
常連さん
会議室デビュー日: 2006/10/29
投稿数: 45
投稿日時: 2009-01-06 22:16
サーバAからサーバBにアップロードするときに、
1. ファイル名をテンポラリのファイル名でアップロード
2. アップロード後にAから(sshで)リネーム
でどうでしょうか。

// 会議室は Linux Square の方が良いかもです。
ささ
会議室デビュー日: 2009/01/05
投稿数: 2
投稿日時: 2009-01-07 08:53
Ayさん
ありがとうございます。
リネームの方法は考えましたが、リネーム処理のコストも抑えたいと思い
投稿した次第です。バッファ→書き込みの仕組みを考えると、ファイル
サイズによっては心配不要にならないでしょうか。。
Ay
常連さん
会議室デビュー日: 2006/10/29
投稿数: 45
投稿日時: 2009-01-08 02:19
うーん、リネームも×となると、私にはいい案はちょっと思いつかないです…
ちなみに、「リネームのコスト」ってそんなに大きいものなのでしょうか?

もし、「scpで転送の通信」+「sshでリネームの通信」の2セッション使用するのが…という話であれば、ssh1発で転送できなくもないと思いますが、いかがでしょうか。
コード:
serverA$ cat foobar | ssh who@serverB 'cat - > /tmp/foobar.tmp; mv /tmp/foobar.tmp /x/foobar'


(ごめんなさい、環境がないため、試していないです)
1

スキルアップ/キャリアアップ(JOB@IT)