LoginSignup
0
0

rsyncエラー(code 24)が出た

Last updated at Posted at 2023-03-19

【rsyncエラー(code 24)が出た】

はじめに

ある日、移設元サーバと移設先サーバの同期のためにrsyncをした。
以下のようなrsyncスクリプトを実行し、Slackへ通知するようにしていた。

例文
#!/bin/bash

set -eu

--- snip ---

set +e
<rsynスクリプト>

RSYNC_STATUS=$?

if [[ "${RSYNC_STATUS}" = 0 ]]; then
    MESSAGE="message=$(hostname): rsyncが成功しました ($RSYNC_STATUS)";
else
    MESSAGE="message=$(hostname): rsyncが失敗しました ($RSYNC_STATUS)";
fi

curl <Slackへメッセージ>

もちろん、正常終了の0を期待していたのだが24が返ってきた...
rsync(code 24)がよくわかっていなかったので調べた時のメモ。

ざっくりrsync

  1. ファイル複製・転送を始める前に処理対象(ファイル名タイムスタンプ,ファイルサイズ)のファイルリストを作成する
  2. コピー先でrsyncを実行し、コピー元からのファイルリストを分類する
    1. 同一ファイル
    2. 存在しないファイル
    3. 差分があるファイル
  3. コピー元からコピー先へファイル転送
    1. 同一ファイルはスキップ
    2. 存在しないファイルは丸ごとコピー
    3. 差分があるファイルは差異だけをコピー
  4. (ファイルリスト作成後にアプリケーションプログラムの一時ファイル等が消失するケースがよくある)

rsyncエラー(code 24)

まず、rsyncコマンドの実行中にエラーが発生することはよくある(?)そうです。
(コピー元をサーバを停止させるとよいと書かれていたが、それはできないサーバでした)

エラー コード 24 は主に、ソース ファイルが消失したために部分的な転送が行われた場合に発生します。

ref. https://bobcares.com/blog/rsync-error-24/

今回のエラーは、以下が考えられることがわかった。

  1. ファイルリスト作成時に存在していたものが、転送前に削除された
  2. ファイル名の読み取りエラー

1つ目について、以下のようなことがあるとわかった。

ライブ バックアップ中にファイルが消失するのは、まったく正常なことです。たとえば、多くのアプリケーションは有効期間の短い一時ファイルを作成します。そして、それらは後で削除されます。これは特に、メール サーバーの場合に発生します。メール サーバーでは、電子メール メッセージを含むファイルが常に 1 つのディレクトリから別のディレクトリに移動されます。

ref. https://bobcares.com/blog/rsync-error-24/

結論、よくあることでエラーが出る時と出ない時があるが、深刻には受け止める必要はないらしい...
が、自分は気になったので再実行し、再度失敗したらエラーログを確認して調べることにした。

すると、正常終了した。
rsyncは何度か実行すると、ファイルリストを作成のやり直してくれるだろうか。。
rsyncの仕組みを調べるきっかけになったのはよかった。

はぎれがわるいが、おわり。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0