マンページからmp3gain
次の内容を読むことができます。
-t mp3gain writes modified mp3 to temp file, then deletes
original instead of modifying bytes in original file (This is
the default in Debian)
-T mp3gain modifies bytes in original file instead of writing to
temp file.
ほとんどのディストリビューション(およびWindows)はいくつかのバイトを変更します(可能であればmp3のパディングタグスペースから推測されます)。これのもう一つの利点は、速度が速いということです。特に、何千ものファイルにタグを付ける場合は、さらにそうです。これには、変更されたクラスタのみをDropboxなどに同期できるという利点があります。
ただし、Debian はファイル全体 (変更されたバイトを含む) を一時ファイルに書き換え、元のファイルを一時ファイルに置き換えます。
理由を知りたいです。この事実を理解している方の実際の理由を知りたいです。 (情報に基づいて推測するのは自由ですが、より多くの回答が得られるまで回答の受け入れを保留します。)
答え1
あなたの質問によると、Debianはすべての書き込みに一時ファイルを使用しますが、これは本当ではありません。これは単なるデフォルト設定ですmp3gain
。
バージョン1.4.3-2では、パッケージマネージャ(Stefan Fritsch)はReiserFSに一時ファイルを作成する方がはるかに高速なので、これがDebianのデフォルトになると判断しました。これは以下から導き出されます。修理する存在するhttps://packages.debian.org/source/squeeze/mp3gain
他のディストリビューションのパッケージマネージャは Stefan のコメントに同意しない可能性があるため、一時ファイルを使用しないデフォルト設定を変更しませんでした。
答え2
あなたはする必要がありますいいえファイルが修正されました。ファイルに書き込む唯一の安全な方法は次のとおりです。
- ファイル()を最初に作成した人の場合
O_EXCL
。 - 新しい一時ファイルに書き込んで(自動的に)実行します
rename(2)
。 - 追加専用モード()でファイルを開きます
O_APPEND
。
そうでなければ〜するプログラムがクラッシュした場合(プログラムが完璧であると嘘をつかないでください)、または電源が切れるとデータは常に失われます。
まだこれらのルールを理解していない主なアプリケーションがたくさんあります。はい書き込みトリミングモードでファイルを開くオプション(まったく役に立たないため)
答え3
ファイルをその場で変更することは必ずしも簡単ではありません。
ファイルの途中に日付を追加するとサイズが大きくなり、変更されたすべてのデータを新しい場所に書き込む必要があります。ファイルの途中で最初にデータを書き込む場合は、前のデータを保存する必要があり、移動が可能で、途中でクラッシュしないことを願っています。結果を新しいファイルに書き込む方がはるかに簡単です。
新しいファイルを作成してから元のファイルに置き換えることも、古いファイルにアクセスするすべてのプロセスが中断することなく作業を続行できるという利点があります。そのファイル内でアイテムを移動すると、プロセスが大幅に乱雑になる可能性があります。