Emacs: Turn Off Backup
disable emacs's automatic backup~ file
Put this code in your emacs init file:
(setq make-backup-files nil)
disable emacs's #autosave#
set emacs so that all backups are placed into one backup folder
Put the following in your emacs init:
;; backup in one place. flat, no tree structure (setq backup-directory-alist '(("" . "~/.emacs.d/backup")))
This will create backup files flat in the given dir, and the backup file names will have “!” characters in place of the directory separator.
For example:
- file
/A/B/web/xyz/myfile.txt
- backup root dir
/A/B/.emacs.d/backup
- backup at
/A/B/.emacs.d/backup/A!B!web!emacs!myfile.txt~
If you use long file names or many nested dirs, this scheme will reach file name length limit quickly. (Mac and Windows allow 255 chars for file name.)
set emacs backups in one dir with tree structure
Put the following in your emacs init file:
;; make backup to a designated dir, mirroring the full path (defun my-backup-file-name (fpath) "Return a new file path of a given file path. If the new path's directories does not exist, create them." (let* ( (backupRootDir "~/.emacs.d/backup/") (filePath (replace-regexp-in-string "[A-Za-z]:" "" fpath )) ; remove Windows driver letter in path, for example, “C:” (backupFilePath (replace-regexp-in-string "//" "/" (concat backupRootDir filePath "~") )) ) (make-directory (file-name-directory backupFilePath) (file-name-directory backupFilePath)) backupFilePath ) ) (setq make-backup-file-name-function 'my-backup-file-name)
The above will mirror tree structure to the backup dir.
For example:
- file
/A/B/web/xyz/myfile.txt
- backup root dir
/A/B/.emacs.d/backup/
- backup at
/A/B/.emacs.d/backup/A/B/web/xyz/myfile.txt~
(info "(elisp) Backup Files") (info "(emacs) Backup")
stop emacs's backup changing the file's creation date of the original file
Put this code in your emacs init file:
(setq backup-by-copying t)
Explanation: when emacs does a backup, by default it renames the original file into the backup file name, then create a new file and insert new file content into it. This effectively destroys the creation date of your file. (If a file is created in 2001, and you modified it today, the file's creation date will become today. Note: unixes (including Linux and BSD) do not record file creation date, so this doesn't matter. (ctime is not creation date.) Microsoft Windows and Mac OS X do record file creation date.).
How to Delete Emacs Backup Files
To delete all backup files in current dir:
- Alt+x
dired
. dired-flag-backup-files
【~】 → mark all backup files for deletion.dired-do-flagged-delete
【x】 → (execute) delete files flagged for deletion.
[see Emacs: File Manager, dired]
Or, you can use the linux shell command:
# delete all file whose name end in ~. All subdir too. find . -name "*~" -delete
You can setup a abbrev to quickly type the shell line.
[see Emacs: Abbrev Mode]
Even more efficient is to set a command that lets you pick a shell command. See: Emacs: Interactive Abbrev.
Backup on Demand
If you have a question, put $5 at patreon and message me on xah discord.
Or support me by Buy Xah Emacs Tutorial