ソースコードはこちら
https://github.com/mi3w2a1/incremental-backup

ファイルのバックアップを繰り返していると復元可能なポイントが増えていき、このようになります。

そこで必要のない復元ポイントは表示されないようにしてしまいましょう。

前回のバックアップと比較して変更点があるときだけバックアップしているので、その部分を削除してしまっても他のファイルを復元できるようにしておく必要があります。

復元ポイントを削除するということはファイル復元のために必要なファイルが入っているフォルダを削除することを意味しています。そこで次世代のフォルダにファイルを移動させることにします。もし移動先にすでにファイルが存在する場合はそれは更新されたファイルなので、更新したファイルが無効にならないように上書きはしないようにします。そうすれば復元ポイントが削除されても問題ありません。

バックアップ用のフォルダとログと差分が記録されたファイルは削除します。ただ困ったことにアンチウイルスソフトによってはウイルスと検知されてしまうことがあります。ノートンセキュリティオンラインではデータプロテクタが有効になっていると疑わしい処理とみなされて遮断されてしまいます。

FormRestoreクラスにボタンを追加します。

ボタンがクリックされたらリストボックスの上から何番目が選択されているかを調べて、復元可能な日時のリストから削除されようとしている復元ポイントの日時と、バックアップ情報が記録されているフォルダを調べます。

バックアップ情報が記録されているフォルダとひとつ次の世代のフォルダのパスを求め、前者から後者へファイルを移動させます。

Form1クラスのGetFolderPathFromTicksメソッド、GetLogFilePathFromTicksメソッド、GetDifferenceFilePathFromTicksメソッドにアクセスできるようにアクセス修飾子をpublicに変更してください