--backupでrsyncの--inplaceオプションを使用するには?

--backupでrsyncの--inplaceオプションを使用するには?

とデータを同期しますrsync --delete --backup --backup-dir=[some directory] -avz [source] [destination]

  • rsyncを実行しているマシンでは、ディレクトリはローカルにマウント[source][destination]れたNFSエクスポートです(つまり、rsyncを実行しているマシンはNFSクライアントです)。
  • 成功rsync+いくつかの確認後、バックアップが削除されました。

私のLANの他のシステムはアプリケーションサーバーであり、[destination]同じNFSエクスポートがローカルにインストールされています。アプリケーション側の複雑さにより制御できない上記では、アプリケーションが名前を使用するのではなく、inodeでファイルを参照しているようです。ファイルが次から変更されたときに問題が発生する可能性があります[source]

  • [destination]ファイルにinodeがあると仮定123
  • アプリケーションはinodeを持つファイルを「指します」。123
  • [source]rsyncはこのファイルのバージョンとバージョンの違いを検出して[destination]ファイルを転送する必要があります。
  • 転送前に「移動」してバックアップを作成します。これで、バックアップファイルにinodeがあります。123
  • ファイルの更新されたバージョンがrsyncによって送信され、新しいinodeが取得されます(456)。
  • rsync+ 検証が正常に完了すると、バックアップは削除されます。これ以上ファイルに123inode がありません。
  • 123アプリケーションはまだ破損したinodeを指しています。
  1. rsync --backupそれがどのように機能するのか、inodeがどのように機能するのか私は理解していますか?
  2. rsync オプションの--inplace使用方法--backup:
  • rsyncは独自のinodeを使用してバックアップファイルを生成しますか?
  • ファイルは現在のinodeを保持していますか?

ベストアンサー1

inodeを介してファイルを参照することはほとんど不可能です。ファイルを開くには、ディレクトリでファイル名への参照を開く必要があります。次に、ファイル名とは無関係のファイルハンドルがあります(これがファイルがファイルシステムから削除される可能性がありますが、まだ開いていてアクティブな理由です)。そのため、アプリケーションの存続期間中にファイルが開いていると仮定します。今、このファイルの内容をrsync

通常、rsyncターゲットファイルの一時コピーは既存のインスタンスと共に作成され、最後の瞬間にソースファイルが削除(またはバックアップ)され、代替ファイルに切り替えられます。この動作はこのオプションを使用して変更し、--inplace新しいコピーを作成せずにrsync実際の宛先を書き込むことができます。

これを指定するので、--backup正しい操作を実行し、rsyncソースインスタンスを更新できるようにする前に、バックアップコピーを作成してください。--inplace簡単な例でこれを理解できます。

# Prepare scenario
mkdir /tmp/624404
cd /tmp/624404
date >src
cp -p src dst

# Initial files, with inodes
ls -li src dst
149172 -rw-r--r-- 1 roaima 29 Dec 14 11:49 dst
137559 -rw-r--r-- 1 roaima 29 Dec 14 11:49 src

# Update, copy, and list
date >src
rsync --times --inplace --backup src dst
ls -li
total 12
149172 -rw-r--r-- 1 roaima 29 Dec 14 11:50 dst
149194 -rw-r--r-- 1 roaima 29 Dec 14 11:49 dst~
137559 -rw-r--r-- 1 roaima 29 Dec 14 11:50 src

# Update again, copy, and list
date >src
rsync --times --inplace --backup src dst
ls -li
total 12
149172 -rw-r--r-- 1 roaima 29 Dec 14 11:50 dst
149194 -rw-r--r-- 1 roaima 29 Dec 14 11:50 dst~
137559 -rw-r--r-- 1 roaima 29 Dec 14 11:50 src

ターゲット(dst)ファイルにはまだ元のinodeがありますが、バックアップには新しいinodeが付与されていることがわかります。 2番目の更新は、inodeがその後維持されたことを示しています。

--inplace --backupあなたの場合、これはあなたに必要なようです。ただし、マニュアルページの警告に注意してください。

警告:他のユーザーがアクセスするファイルを更新するためにこのオプションを使用しないでください。このオプションを使用してコピーを作成するときは注意してください。

デフォルト以外の理由は、--inplace中断された部分的なコピーによってターゲットファイルが一貫性のないままになる可能性があり、作成者は、破損した最新のファイルよりも内部的に一貫した古いファイルを持つ方が良いと信じているからです。これらの動作は、(バージョン3.0.0でも)--inplaceなどのフラグを使用して変更できます。--partial--appendrsync

おすすめ記事