ファイルの書き込み中にcronが実行されると、rsyncは2つのバックアップを作成します。

ファイルの書き込み中にcronが実行されると、rsyncは2つのバックアップを作成します。

rsync30mごとにこのコマンドを実行するcrontabがあります。

rsync -rtbpgoi --suffix="."$(date +"%Y%m%d%H%M") --exclude=".*" \
--exclude="~*" --exclude="[Tt][Hh][Uu][Mm][Bb][Ss].[Dd][Bb]" \
--exclude="[Dd][Ee][Ss][Kk][Tt][Oo][Pp].[Ii][Nn][Ii]" \
--info=STATS0,FLIST0,NAME1 /mnt/datastore/ /mnt/dsbackup

長いダウンロードのようにファイルが作成されている場合は、最終的にファイルの追加のバックアップコピーが作成され、そのうちの1つは不完全なダウンロードのバックアップになります。

rsyncまだ作成中のファイルを無視する方法や、不完全なファイルのバックアップを防ぐ他の方法はありますか?削除し-bて切り替えることができることを知っていますが、ファイルが--suffix変更されたときにバージョン履歴を維持する機能を維持したいと思います。

答え1

あなたの質問に答えるrsync私の知る限りではそうです。いいえ実行中の別のプログラム(Webブラウザなど)がファイルを積極的に変更していることを知るための組み込み方法はありますか?

特定のバックアップタイプ(30分ごとに同じソースとターゲットの実行)を達成できます。決定的なこのオプションをコマンドに追加して、最終ファイルと名前の異なる中間ファイル(download_1.zip.tmp中間ファイルdownload_1.zipなど)を削除します。--delete

初めて実行すると、rsyncファイルdownload_1.zip.tmpはバックアップ場所にコピーされます。ダウンロードが30分以内に完了すると仮定すると、中間ファイルのdownload_1.zip.tmp名前はdownload_1.zipNextを実行すると、rsync中間rsyncファイルは見つからなくなりdownload_1.zip.tmp(名前が変更されたためdownload_1.zip)、バックアップから削除され、置き換えられますdownload_1.zip.tmpdownload_1.zipこれは返品/mnt/dsbackupソース()に存在しなくなった追加ファイルをバックアップ()から削除します/mnt/datastore

rsyncマニュアルページ(バージョン3.1.0)から:

これは、rsyncに受信側から不要なファイル(送信側にないファイル)を削除するように指示しますが、同期されているディレクトリからのみ削除されます。ディレクトリの内容( "dir / *"など)にワイルドカードを使用せずにディレクトリ全体( "dir"または "dir /"など)を送信するようにrsyncに要求する必要があります。ワイルドカードはシェルによって拡張されるため、rsyncはファイルの親ディレクトリではなく単一のファイルを転送するように要求されます。 --delete-excludedオプションを使用するか、転送側でのみ一致するようにルールを表示しない限り、転送から除外されたファイルは削除されません(フィルタリングルールセクションの包含/除外修飾子を参照)。

関連情報