0

バックアップ ソリューションを作成しています。私が達成しようとしていることに何か新しいものがあるとは思えません。

ファイルをコピーする前に、何かが破損した場合に備えて、宛先ファイルのバックアップを取りたいと考えています。これは、ファイルの名前を変更することを意味します。

ファイルが既に存在し、末尾に 01 を追加するのは安全ではない場合に備えて、名前を変更するときは注意が必要です。

私の質問は、他の場所で答えが見つからないことに基づいて、ファイル名に GUID を追加すると機能するということです。したがって、私のファイルが file01.txt という名前で、ファイルの名前を file01.txtGUID (GUID は生成された GUID です) に変更すると、そのファイルのバックアップを実行できます (この例では 2 つのバックアップがあります)。 (ファイルの長さをソースと比較して) ファイルがコピーされたことを確認し、名前に GUID を含むファイルを削除します。

GUID が一意であることが 100%保証されていないことはわかっていますが、これで十分でしょうか?

4

4 に答える 4

3

GUID を取得してから、宛先 OS に名前 + GUID が存在するかどうかを尋ねます。存在する場合は、新しい GUID を選択して再試行してください。いずれにせよ name+GUID ファイルを削除するので、最初の試行で一意のファイル名を選択できなくても誰が気にします.

リスクと影響を考えると、間違った問題に焦点を合わせているのではないかと思います。

宛先システムで 2 つのバックアップを作成するためのディスク容量がない場合はどうすればよいでしょうか?

ファイル名 + パスが長すぎて宛先 OS が処理できない場合はどうなりますか?

あなたが名前を取得してからファイルに対して時間の操作を実行しようとするまでの期間に、他の誰かがファイルを変更したのは何ですか?

防御的なコードを書くということは、リスクについて考えることです。

于 2012-10-13T15:46:43.930 に答える
2

GetTempFileName()を使用してみませんか?それが目的です。

http://msdn.microsoft.com/en-us/library/system.io.path.gettempfilename.aspx

于 2012-10-13T17:18:30.950 に答える
1

はい、これで十分です。量子力学によって不可能なことは何もありません。理論的には 100 万年後に偶然に GUID を再現できるかもしれませんが、ファイルの名前も追加しているため、さらに不可能です。もちろん、ファイルサイズをバイトまたはファイルのハッシュで追加することもできますが、Windows ではパスの長さが無限ではないことに注意してください。

Guid.NewGuid()

あなたの友達なら。

于 2012-10-13T15:39:46.290 に答える
-1

それは世界的にユニークで、宇宙でユニークです。あなたが引用している投稿は冗談です。

于 2012-10-13T15:36:14.237 に答える