Previous: , Up: バックアップファイル   [Contents][Index]


19.3.2.3 コピー vs. リネーム

バックアップファイルは、古いファイルをコピーまたはリネームすることで作ることができます。コピーとリネームは、古いファイルが複数の名前をもつ場合(ハードリンクされている場合)に、異なる効果をもちます。古いファイルがバックアップファイルにリネームされた場合、ハードリンクされた別の名前で参照されるファイルは、バックアップファイルとなります。かわりに古いファイルをコピーすると、ハードリンクされた別の名前で参照されるファイルは、編集中のファイルのままで、それらの名前でアクセスする内容は新しい内容となります。

バックアップファイルを作る方法は、編集中のファイルの所有者とグループにも影響します。コピーが使われた場合、それらは変化しません。リネームが使われた場合、そのユーザーがファイルの所有者となり、ファイルのグループはデフォルト(オペレーティングシステムごとにグループのデフォルトは異なります)のグループになります。

リネームとコピーの選択は、以下の変数により行われます:

ファイルがバージョンコントロールシステムで管理されている場合(バージョンコントロールを参照)、通常、Emacsは普通の方法でそのファイルのバックアップを作りません。しかしコミット(チェックインとも呼ばれる。バージョンコントロールの概念を参照されたい)は、バックアップを作るのと似たところがあります。これらの操作は通常ハードリンクをこわし、同じファイルにたいする別のファイル名でのvisitを切断します。Emacsにできることはありません。バージョンコントロールシステムがこれを行うのです。

一部のファイルストレージサービス(FSS)はファイルバージョニング(file versioning)をサポートしています。これらのFSSではファイルにたいする以前の履歴を記録して、以前のバージョンにリバートすることができます。Emacsでこの種のサービスによってホストされたファイルを編集する際にこれらの操作を可能にしたい場合には、backup-by-copyingを非nil値にカスタマイズしてください。

バックアップとして古いファイルをコピーしておけば、バックアップと編集の間に何か起こっても古いファイル名を維持することが保証されるので、大事なファイルを編集する際には重宝するでしょう。かわりにfile-precious-flagを非nil値にカスタマイズすれば、コピーによってバックアップを行うことに加えて、さらに編集を保存する際のI/Oエラーからの保護も行われます。