linuxサーバーAのあるディレクトリから、別のlinuxサーバーBのあるディレクトリに、サーバーA内に一定間隔で入ってくるデータファイルを一定間隔でコピーし続けたいと思っています。
サーバーAには、一日中毎に観測データファイル(20230826.rawなど)が作成され、30秒毎にその日のファイル内のデータが一行ずつ追記されていきます。このファイルを、1分間隔でAからBにコピーし続けたいです。同じ日付であれば、中身だけ増えていくので、同じファイルのものは上書きなどの処理にしたいです。
また、その際に、サーバーAのデータをそのままコピーするのではなく、以下2点の変換をしたものをBにコピーしたいです。
①データの形式を.rawから.datに変換
②データの中には含まれる+を+0に変換
何か良い方法をご存知でしたらおしえていただけると嬉しいです。
No.2ベストアンサー
- 回答日時:
ご質問が漠然としているため多くの回答者は何を答えて良いやら判断が難しいと思います。
もう少し絞って限定した質問をいただければ回答も付きやすいと思います。「一定時間毎に特定の処理をしたい。」とのことですが、これにはLinuxに備わるcron機能、あるいはシェルスクリプトファイルの中でsleepコマンドを用いた無限ループを実行することができると思います。
どちらも専用のシェルスクリプトファイルを作成して使用することになると思います。cronは予め実行開始時間、実行間隔、実行機能を登録しておくことで、パソコンがbootを完了した直後から勝手に機能が有効になります。Windowsのサービス機能と少し似ています。。
一方のsleepコマンドを使ったシェルスクリプトファイルの実行は、ユーザがパソコンにログインした後当該スクリプトを起動することで処理が開始されることになります。
ご質問にある『一分毎...』の時間を守ることが重要ならcron機能のほうが優れていると思われますが、一方ファイルコピー及び変換が一分間で間に合わない事態が生じると、負荷が急激に大きくなりトラブルの元になるかもしれません。
以下は10秒毎にechoコマンドを実行するスクリプトの例です。
#!/bin/csh -f
# File name: test
# Infinite loop
Label_1:
echo "Hello World"
sleep 10 # 10(sec)
goto Label_1
1.ファイルコピー
ご質問には何らご説明がありませんが、相手のパソコンのファイルシステムをnfsマウントしてあるのなら、前述のスクリプトに"cp"コマンドで繰り返しコピーすることができるでしょう。
nfsマウントしていないのなら"sftp"コマンドで"get"あるいは"put"することでファイルをコピーすることができます。但し"sftp"コマンドの利用には更にひと手間かける必要があるでしょう。
2.ファイル名の生成
固定したディレクトリにご質問のようなファイルが生成されるなら、スクリプトの中で次のようにファイル名を生成できます。
#!/bin/csh -f
# File name: test (Infinite loop)
Label_1:
set Name = `date '+%Y%m%d%H%M%S'`
set Ifile = "$Name.raw"
set Ofile = "$Name.dat"
echo "InputFile = $Ifile, OutputFile = $Ofile"
sleep 10 # 10(sec)
goto Label_1
これを実行すれば次の出力が得られます...
$ ./test
InputFile = 20230823140256.raw, OutputFile = 20230823140256.dat
InputFile = 20230823140306.raw, OutputFile = 20230823140306.dat
InputFile = 20230823140316.raw, OutputFile = 20230823140316.dat
InputFile = 20230823140326.raw, OutputFile = 20230823140326.dat
ちゃんと10秒毎に実行されているのが判ります。
3.データの形式を.rawから.datに変換
これは全く意味が判りません。何かのバイナリファイルをテキストデータに変換する、の様にとれますがご質問の中に説明がありません。
●ソフトウエアをバッチ処理で使う
ご質問者様が既に変換ソフトをお持ちでバッチ処理で利用できるものなら、単純にスクリプトにそれを記述するだけです。ここではソフト名を"Conv"だとすれば...
#!/bin/csh -f
# File name: test (Infinite loop)
Label_1:
set Name = `date '+%Y%m%d%H%M%S'`
set Ifile = "$Name.raw"
set Ofile = "$Name.dat"
Conv $Ifile $Ofile
sleep 10 # 10(sec)
goto Label_1
で良いことになります。
●ソフトウエアを作る
シェルスクリプトでの作成は難しいでしょう。C言語などでの作成が必要になりますが、バイナリファイルのフォーマットが既知でなければ、そもそもそれもできないことになります。何らかの方法で"Conv"変換プログラムを作成できたら、上で説明した方法でスクリプトに組み込むことができます。
4.テキストファイルの文字列変換
上記スクリプトファイルに"sed"コマンドなどを追加することでテキストファイルの文字列変換は簡単にできます。
早速お返事いただきありがとうございました!お礼が遅くなり申し訳ございません。
教えていただいたことを参考にしてみたところ、希望どおりの操作ができました。
No.1
- 回答日時:
一般的には cron+rsync 等を使えばよいのですが
https://ja.wikipedia.org/wiki/Crontab
https://ja.wikipedia.org/wiki/Rsync
ご提示の様な変換を咬ませるとなると、
素直にそれなりのスクリプトを bash や python で組むのが一番簡単かと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ftpのmgetコマンドの自分の格納...
-
拡張子.dどういう意味
-
linuxコマンド mkdirでディレ...
-
ファイル名で / (スラッシュ...
-
ホームページのディレクトリを...
-
FTPコマンドのCDについて
-
FTPで上書きできない
-
「照合パターンに合いません」...
-
ディレクトリ内に作成できる最...
-
7zを使うとフォルダの中身がす...
-
LinuxでSGID設定する際、2775と...
-
Minecraftにforgeを入れたら、...
-
FTPでPUTできない原因は何?
-
make時に出てきたエラーメッセ...
-
unzipコマンドでディレクトリな...
-
WriteFileの引数について
-
"cp -a"と"cp -r"の違い
-
#./configureの時点でダメです。
-
バッチファルの置き場所
-
lsの4096とディレクトリ容量計...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ftpのmgetコマンドの自分の格納...
-
ホームページのディレクトリを...
-
拡張子.dどういう意味
-
scpによるデータ転送後、ディレ...
-
FTPコマンドのCDについて
-
7zを使うとフォルダの中身がす...
-
make時に出てきたエラーメッセ...
-
「ドット(.)」と「¥」の意味...
-
バッチファルの置き場所
-
ファイル名で / (スラッシュ...
-
linuxコマンド mkdirでディレ...
-
FTPでPUTできない原因は何?
-
Linuxコマンドについて
-
2TBのUSBメモリを2000円ほどで...
-
linuxのコマンドラインで、拡張...
-
「照合パターンに合いません」...
-
/(スラッシュ)で区切ったフル...
-
ftpでのフォルダごとの転送はで...
-
unzipコマンドでディレクトリな...
-
"cp -a"と"cp -r"の違い
おすすめ情報