前: Backup Deletion, 上: Backup


12.3.1.3 コピーと改名

バックアップファイルは、古いファイルをコピーする、あるいは、 それを改名することで作ります。 古いファイルに複数の名前があると、これには違いが出てきます。 古いファイルを改名してバックアップファイルにすると、 (古いファイルの)別の名前もバックアップファイルを指します。 古いファイルをコピーした場合には、 (古いファイルの)別の名前は編集しているファイルを指し続け、 その名前で参照される内容も新しい内容になります。

バックアップファイルを作る方法は、 元ファイルの所有者とグループにも影響します。 コピーするならば、何も変更されません。 改名すると、ファイルの所有者はあなたになり、 ファイルのグループはデフォルトになります (オペレーティングシステムごとにグループのデフォルトは異なる)。

所有者を変更することは、多くの場合、よいことです。 というのは、所有者がつねに最後にファイルを編集した人を表すからです。 同様に、バックアップの所有者はその版を作った人を表します。 ときには、ファイルの所有者を変更すべきでないファイルがあります。 そのようなファイルについては、 backup-by-copying-when-mismatchをローカルに設定する ローカル変数リストをファイルに入れておくのがよいです。

改名するかコピーするかは、3つの変数で制御されます。 デフォルトは、改名です。 変数backup-by-copyingnil以外ならばコピーします。 nilのときには、 変数backup-by-copying-when-linkednil以外ならば、 複数の名前を持つファイルではコピーし、 編集中のファイルには名前が1つだけなら改名します。 変数backup-by-copying-when-mismatchnil以外のときには、 改名するとファイルの所有者やグループが変更されるときにはコピーします。 スーパーユーザーでEmacsを起動すると、 backup-by-copying-when-mismatchのデフォルトはtです。

ファイルを版管理システム(see Version Control)で管理している場合には、 通常Emacsはそのファイルのバックアップを通常の方法では作りません。 チェックインとチェックアウトは、 ある意味でバックアップを作ることに似ています。 残念なことに、 これらの操作は典型的にはハードリンクを切るという 類似性があります。 つまり、あるファイルの別の名前を使っていたとすると そのファイル名がなくなるのです。 Emacsにできることはありません。 版管理システムが処理します。