rsync
30mごとにこのコマンドを実行する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.zip
。Nextを実行すると、rsync
中間rsync
ファイルは見つからなくなりdownload_1.zip.tmp
(名前が変更されたためdownload_1.zip
)、バックアップから削除され、置き換えられますdownload_1.zip.tmp
。download_1.zip
これは返品/mnt/dsbackup
ソース()に存在しなくなった追加ファイルをバックアップ()から削除します/mnt/datastore
。
rsync
マニュアルページ(バージョン3.1.0)から:
これは、rsyncに受信側から不要なファイル(送信側にないファイル)を削除するように指示しますが、同期されているディレクトリからのみ削除されます。ディレクトリの内容( "dir / *"など)にワイルドカードを使用せずにディレクトリ全体( "dir"または "dir /"など)を送信するようにrsyncに要求する必要があります。ワイルドカードはシェルによって拡張されるため、rsyncはファイルの親ディレクトリではなく単一のファイルを転送するように要求されます。 --delete-excludedオプションを使用するか、転送側でのみ一致するようにルールを表示しない限り、転送から除外されたファイルは削除されません(フィルタリングルールセクションの包含/除外修飾子を参照)。