
Apple Lucky Bag に並び中
自分の中では毎年恒例、Appl…
前回、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 ..