Emacs Lisp: Make Backup of Current File
Here's a simple command to backup the current file.
(defun xah-make-backup () "Make a backup copy of current file or dired marked files. If in dired, backup current file or marked files. The backup file name is ‹name›~‹timestamp›~ example: file.html~20150721T014457~ in the same dir. If such a file already exist, it's overwritten. If the current buffer is not associated with a file, nothing's done. URL `http://ergoemacs.org/emacs/elisp_make-backup.html' Version 2015-10-14" (interactive) (let ((ξfname (buffer-file-name))) (if ξfname (let ((ξbackup-name (concat ξfname "~" (format-time-string "%Y%m%dT%H%M%S") "~"))) (copy-file ξfname ξbackup-name t) (message (concat "Backup saved at: " ξbackup-name))) (if (string-equal major-mode "dired-mode") (progn (mapc (lambda (ξx) (let ((ξbackup-name (concat ξx "~" (format-time-string "%Y%m%dT%H%M%S") "~"))) (copy-file ξx ξbackup-name t))) (dired-get-marked-files)) (message "marked files backed up")) (user-error "buffer not file nor dired")))))
(defun xah-make-backup-and-save () "backup of current file and save, or backup dired marked files. For detail, see `xah-make-backup'. If the current buffer is not associated with a file, nothing's done. URL `http://ergoemacs.org/emacs/elisp_make-backup.html' Version 2015-10-14" (interactive) (if (buffer-file-name) (progn (xah-make-backup) (when (buffer-modified-p) (save-buffer))) (progn (xah-make-backup))))
You can give one of the command a key, such as 【F8】. 〔➤see Emacs: How to Define Keys〕
To delete all backups of current directory, in
dired, press【~ x】(that's
〔➤see Emacs: File Management (dired tutorial)〕
To jump from current file to its dired location, call
or, buy something from my keyboard store.