18.3.2 Backup Files
On most operating systems, rewriting a file automatically destroys all record of what the file used to contain. Thus, saving a file from Emacs throws away the old contents of the file—or it would, except that Emacs carefully copies the old contents to another file, called the backup file, before actually saving.
Emacs makes a backup for a file only the first time the file is saved from a buffer. No matter how many times you subsequently save the file, its backup remains unchanged. However, if you kill the buffer and then visit the file again, a new backup file will be made.
For most files, the variable make-backup-files
determines
whether to make backup files. On most operating systems, its default
value is t
, so that Emacs does write backup files.
For files managed by a version control system (see Version Control), the variable vc-make-backup-files
determines whether
to make backup files. By default it is nil
, since backup files
are redundant when you store all the previous versions in a version
control system.
See General Options.
At your option, Emacs can keep either a single backup for each file, or make a series of numbered backup files for each file that you edit. See Single or Numbered Backups.
The default value of the backup-enable-predicate
variable
prevents backup files being written for files in the directories used
for temporary files, specified by temporary-file-directory
or
small-temporary-file-directory
.
You can explicitly tell Emacs to make another backup file from a
buffer, even though that buffer has been saved before. If you save
the buffer with C-u C-x C-s
, the version thus saved will be made
into a backup file if you save the buffer again. C-u C-u C-x C-s
saves the buffer, but first makes the previous file contents into
a new backup file. C-u C-u C-u C-x C-s
does both things: it
makes a backup from the previous contents, and arranges to make
another from the newly saved contents if you save again.
You can customize the variable backup-directory-alist
to
specify that files matching certain patterns should be backed up in
specific directories. A typical use is to add an element ("." . dir)
to make all backups in the directory with absolute name
dir. Emacs modifies the backup file names to avoid clashes
between files with the same names originating in different
directories. Alternatively, adding, ("." . ".~")
would make
backups in the invisible subdirectory .~
of the original file’s
directory. Emacs creates the directory, if necessary, to make the
backup.