0

次のようなファイルをいくつか取得しました。

2012-12-17_083213_1.log
2012-12-17_083213_1.log_stats
2012-12-17_083213_1.logaccount_ptr
2012-12-17_083213_1.loginitial_ptr
2012-12-17_083213_1.logptr
2012-12-17_093049_2.log
2012-12-17_093049_2.log_stats
2012-12-17_093049_2.logaccount_ptr
2012-12-17_093049_2.loginitial_ptr
2012-12-17_093049_2.logptr

ここでは、1G のデータが満たされるたびに、年-月-日_時分秒_番号.log 形式の名前で新しいファイルが作成されます (上記を参照)。したい

  1. すべての *.log を、Year-Month-Day という形式で名前を付けた新しいフォルダーにコピーします。これは、2012-12-17 という名前になります
  2. Tgz そのフォルダ
  3. サーバーIPに送信します。

正確にはわかりません。新しく追加されたファイルに対して毎日実行できるように、bash スクリプトとして使用したいと考えています。助けてくれてありがとう。

4

1 に答える 1

1
for f in *log ; do
    targetdir=${f:0:10}
    mkdir ${targetdir} 2>/dev/null
    echo ${targetdir} > dirstotar
    mv ${f} ${targetdir}
done 
sort dirstotar | uniq | while read dir ; do
    tar --remove-files -cvzf "${dir}.tar.gz" "${dir}"
done
find . -name '*tar.gz' -print | xargs scp '{}' user@host:/dir

これはあなたのために働くかもしれません。

  1. すべてのログ ファイルの名前を確認し、ログ ファイル名の最初の 10 文字を含むディレクトリを作成します (存在する場合は、エラーを無視してください)。
  2. ログファイルをそのディレクトリに移動します
  3. 後で処理するためにディレクトリ名をファイルに記録します。
  4. ディレクトリリストを処理する (tar)
  5. すべての tar.gz をリモート ホストにコピーします。

それはあなたにとって単なる出発点です。完全な解決策が必要な場合は、何を試し、何がうまくいかなかったかを示してください。または、専門家を雇ってください。

于 2012-12-17T20:08:50.923 に答える