前回、vimで書いたもののEmacs版。
Emacsで編集するファイルを自動的にバックアップし、世代管理するというもの。
設定方法は簡単で、以下の内容を「\~/.emacs.el」に記述する(ファイルが無ければ新規で作成する)。
なお、内容についてはこちらを参考…というか、日付の所をちょっと書き換えただけだ。
(setq make-backup-files t) ; バックアップファイルを作成する
(setq backup-directory "~/.backup") ; バックアップファイルの作成先を指定する
(if (and (boundp 'backup-directory) ; バックアップファイル名に日付を追加する
(not (fboundp 'make-backup-file-name-original)))
(progn
(fset 'make-backup-file-name-original
(symbol-function 'make-backup-file-name))
(defun make-backup-file-name (filename)
(if (file-directory-p (expand-file-name backup-directory))
(concat (expand-file-name backup-directory)
"/" (file-name-nondirectory filename) "~"
(format-time-string "%Y%m%d_%H%M%S") "~")
(make-backup-file-name-original filename)))))
この設定でファイルを編集すると、「\~/.backup」というフォルダに、「ファイル名.タイムスタンプ」というファイル名でバックアップが取得される。
test@test-vm-ubuntu:~$ emacs test3
test@test-vm-ubuntu:~$ ls -la .backup
合計 16
drwxrwxr-x 2 test test 4096 4月 26 23:19 .
drwxr-xr-x 33 test test 4096 4月 26 23:19 ..
-rw-rw-r-- 1 test test 264 4月 26 23:13 test3.20150426_231857~
-rw-rw-r-- 1 test test 268 4月 26 23:18 test3.20150426_231905~
test@test-vm-ubuntu:~$
この他、 バックアップしたファイル名に日付は付かないが、以下のように設定する方法もある。
こちらは、このサイトを参考に作成した。
(setq make-backup-files t) ; バックアップファイルを作成する。
(setq backup-directory-alist ; バックアップファイルの保存場所を指定。(バックアップ元ファイルのフルパスを「/」を「\」に変換する)
(cons (cons "\\.*$" (expand-file-name "~/.backup"))
backup-directory-alist))
(setq version-control t) ; 複数のバックアップを残す
(setq kept-new-versions 5) ; 残す世代を設定する
(setq delete-old-versions t) ; 確認せずに古いバックアップを削除する
(setq vc-make-backup-files t) ; バージョン管理下のファイルもバックアップを作成する
こちらの設定でファイルを編集すると、以下のように「バックアップファイル名.世代番号」というようになる。
test@test-vm-ubuntu:~$ emacs test3
test@test-vm-ubuntu:~$ ls -la .backup
合計 20
-rw-rw-r-- 1 test test 311 4月 26 23:38 !home!test!test3.~1~
-rw-rw-r-- 1 test test 317 4月 26 23:38 !home!test!test3.~2~
-rw-rw-r-- 1 test test 322 4月 26 23:38 !home!test!test3.~3~
drwxrwxr-x 2 test test 4096 4月 26 23:38 .
drwxr-xr-x 33 test test 4096 4月 26 23:38 ..