newsyslogローテーションを使用した後、rsync出力(進行中)は新しいログファイルに書き込まれません。

newsyslogローテーションを使用した後、rsync出力(進行中)は新しいログファイルに書き込まれません。

今朝、newsyslogの交換後に進行中のrsyncの出力がrsyncログに表示されないことがわかりました。失われた

つまり、

  • rsync を実行すると、/var/log/rsync に書き込まれます。
  • newsyslog は対数回転を実行します。
  • 新しい /var/log/rsync に出力がありません。
  • 私が見ることができるどこにもキャプチャ出力はありません。

私は何が間違っていましたか?

これはrsyncコマンドです(cygwinを実行しているWindowsシステムのrsyncdモジュールから抽出されます)。これはrsnapshotコマンドの一部ですが、この質問には関係ありません。

/usr/local/bin/rsync -av --delete --relative --delete-excluded --stats --log-file=/var/log/rsync --human-readable --no-owner --no-group --exclude-from=/yada/yada/.rsnapshot_excludes 192.168.3.130::INC-10890_data/ /zfspoolname/archives/daily.0/LOCATIONSIGNIFIER/INC-10890_data/

これは/var/log/rsync.0の最後の5行です(圧縮解除後)。

[root@offsite1 ~]# tail -5 /var/log/rsync.0
2019/02/11 01:03:54 [20023] >f+++++++++ master/20170801/000054420170801010001/000054420170801010001oct_c_102.bmp
2019/02/11 01:03:55 [20023] >f+++++++++ master/20170801/000054420170801010001/000054420170801010001oct_c_103.bmp
2019/02/11 01:03:55 [20023] >f+++++++++ master/20170801/000054420170801010001/000054420170801010001oct_c_104.bmp
2019/02/11 01:03:55 [20023] >f+++++++++ master/20170801/000054420170801010001/000054420170801010001oct_c_105.bmp
2019/02/11 01:03:55 [20023] >f+++++++++ master/20170801/000054420170801010001/000054420170801010001oct_c_106.bmp

/var/log/rsync の内容は次のとおりです。

> [root@offsite1 ~]# tail -5 /var/log/rsync   Feb 11 01:00:00 offsite1
> newsyslog[61988]: logfile turned over

これは、今朝rsync操作を終了したときに画面に表示された最後の行でした(tail -f /var/log/rsyncコマンドを一晩実行しました)。 tail -fを実行したので、/var/log/rsyncに表示する必要があります。 newsyslogが関連していない場合は、/var/log/rsyncでこのタイプの出力を経験したことがあります。

> 2019/02/11 07:13:52 [20023] >f+++++++++
> master/20170914/000504720170914030001/000504720170914030001oct_c_027.bmp
> 2019/02/11 07:13:52 [20023] >f+++++++++
> master/20170914/000504720170914030001/000504720170914030001oct_c_028.bmp
> 2019/02/11 07:13:53 [20023] >f+++++++++
> master/20170914/000504720170914030001/000504720170914030001oct_c_029.bmp
> 2019/02/11 07:13:53 [20023] >f+++++++++
> master/20170914/000504720170914030001/000504720170914030001oct_c_030.bmp
> 2019/02/11 07:13:53 [20023] >f+++++++++
> master/20170914/000504720170914030001/000504720170914030001oct_c_031.bmp
> 2019/02/11 07:13:53 [20023] >f+++++++++
> master/20170914/000504720170914030001/000504720170914030001oct_c_032.bmp
> 2019/02/11 07:13:54 [12868] rsync error: received SIGINT, SIGTERM, or
> SIGHUP (code 20) at rsync.c(689) [generator=3.1.3] 2019/02/11 07:13:54
> [20023] rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at
> io.c(504) [receiver=3.1.3]

これは /usr/local/etc/newsyslog.conf.d/rsync の内容です。

#
# The 'flags' field is one or more of the letters: BCDGJNUXZ or a '-'.
#
# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
/var/log/rsync                          644  13    *    $W1D01 JCN

ついに

[root@offsite1 ~]# uname -a
FreeBSD offsite1.domanname.com 12.0-RELEASE-p3 FreeBSD 12.0-RELEASE-p3 GENERIC  amd64

ベストアンサー1

newsyslogログファイルを新しい名前()に移動/var/log/rsync.0して圧縮します(で使用したフラグ/var/log/rsync.0.bz2のため)。次に、古い名前(のフラグ)で新しいファイルを作成します。Jnewsyslog.confCnewsyslog.conf

これは、ファイルに書き込むプロセスが存在しなくなったファイルに書き込むことを意味します(まあ、存在するが名前はありません)。ファイルハンドルが閉じると、そのinode/var/log/rsyncには名前がなくなり、ファイルが使用するスペースが回復されます。rsyncファイルが圧縮されると、inodeの名前が失われます。

HUP通常、システムサービスは送信してシグナルを送信しますnewsyslog。これは通常、次のことを意味します。もう一度開くそれらの書き込みログファイル。これは、空白を書き込むのではなく、新しく消去されたログファイルへの書き込みを開始することを意味します。

rsync私が知る限り、そのような機能がないので、ログファイルの回転ポイントの後に書かれたすべての内容は失われます。

rsync.0バックアップファイルの作成方法に応じて書き込みをrsync続けることができます。それローテーションログの圧縮を無効にした場合にのみ、このファイルを使用できます。

pフラグ列のフラグを使用すると、これを行うことができますnewsyslog.conf。これにより、ゼロ番目の回転ログファイルは圧縮されていませんが、古いログファイルは圧縮されます。バラよりnewsyslog.conf(8)

最初のログに対してのみ圧縮を無効にすると、rsync同じプロセスがプロセス全体でアクティブになっても問題が発生する可能性があります。第二ログファイルはrsync.0ファイル名が変更されたrsync.1後に圧縮されるため、循環しますrsync.1.bz2(これは同じ問題です)。ログファイル圧縮の無効化完全この問題を解決します。

おすすめ記事