Previous: バックアップの自動削除, Up: バックアップファイル [Contents][Index]
バックアップファイルは、古いファイルをコピーまたはリネームすることで作ることができます。コピーとリネームは、古いファイルが複数の名前をもつ場合(ハードリンクされている場合)に、異なる効果をもちます。古いファイルがバックアップファイルにリネームされた場合、ハードリンクされた別の名前で参照されるファイルは、バックアップファイルとなります。かわりに古いファイルをコピーすると、ハードリンクされた別の名前で参照されるファイルは、編集中のファイルのままで、それらの名前でアクセスする内容は新しい内容となります。
バックアップファイルを作る方法は、編集中のファイルの所有者とグループにも影響します。コピーが使われた場合、それらは変化しません。リネームが使われた場合、そのユーザーがファイルの所有者となり、ファイルのグループはデフォルト(オペレーティングシステムごとにグループのデフォルトは異なります)のグループになります。
リネームとコピーの選択は、以下の変数により行われます:
backup-by-copying
が非nil
(デフォルトはnil
)の場合、コピーが使用されます。
backup-by-copying-when-linked
が非nil
(デフォルトはnil
)で、ファイルが複数の名前をもつ場合は、コピーが使用されます。
backup-by-copying-when-mismatch
が非nil
(デフォルトはt
)で、リネームによりファイルの所有者かグループが変更される場合は、コピーが使用されます。
backup-by-copying-when-mismatch
をnil
に変更すると、Emacsはファイルの所有者のユーザーIDとファイルのグループのグループIDの数字をチェックします。もしいずれかの数字がbackup-by-copying-when-privileged-mismatch
の値より大きければ、backup-by-copying-when-mismatch
が非nil
であるかのように振る舞います。
ファイルがバージョンコントロールシステムで管理されている場合(バージョンコントロールを参照)、通常、Emacsは普通の方法でそのファイルのバックアップを作りません。しかしコミット(チェックインとも呼ばれる。バージョンコントロールの概念を参照されたい)は、バックアップを作るのと似たところがあります。これらの操作は通常ハードリンクをこわし、同じファイルにたいする別のファイル名でのvisitを切断します。Emacsにできることはありません。バージョンコントロールシステムがこれを行うのです。