Mettez toutes les sauvegardes dans un dossier de sauvegarde

15

Comment puis-je configurer Emacs pour que toutes les sauvegardes soient placées dans un dossier de sauvegarde? par exemple/MyEmacsBackups

Luke Shimkus
la source
N'oubliez pas que cela pourrait avoir pour effet secondaire involontaire de laisser des informations sensibles traîner sur votre machine, même après le déplacement / la suppression des originaux. Il serait conseillé de purger ce dossier de sauvegarde de temps en temps. Ces fichiers de sauvegarde peuvent également avoir des autorisations différentes de celles des originaux.
nispio du

Réponses:

17

Découvrez backup-directory-alist, qui vous permet de définir des emplacements de sauvegarde par regexp de fichier. Pour que tout aille dans un répertoire, essayez quelque chose comme:

(setq backup-directory-alist '(("." . "~/MyEmacsBackups")))

Pour les véritables paranoïaques (comme moi), il existe également une sauvegarde à chaque enregistrement , qui (comme son nom l'indique) sauvegarde vos fichiers chaque fois qu'ils sont enregistrés dans un emplacement pratique. Cela donne une couche de protection supplémentaire par rapport au contrôle de version traditionnel, par exemple dans les cas où vous effacez accidentellement votre répertoire de travail sans archiver quelque chose.

shosti
la source
12

Ce qui suit est un code rapide de mon .emacs. Il ne place pas seulement les sauvegardes dans un répertoire spécifique, mais enregistre également automatiquement, et fait de même pour les fichiers clochards afin qu'ils ne soient pas placés sur le système distant.

;; Put backup files neatly away                                                 
(let ((backup-dir "~/tmp/emacs/backups")
      (auto-saves-dir "~/tmp/emacs/auto-saves/"))
  (dolist (dir (list backup-dir auto-saves-dir))
    (when (not (file-directory-p dir))
      (make-directory dir t)))
  (setq backup-directory-alist `(("." . ,backup-dir))
        auto-save-file-name-transforms `((".*" ,auto-saves-dir t))
        auto-save-list-file-prefix (concat auto-saves-dir ".saves-")
        tramp-backup-directory-alist `((".*" . ,backup-dir))
        tramp-auto-save-directory auto-saves-dir))

(setq backup-by-copying t    ; Don't delink hardlinks                           
      delete-old-versions t  ; Clean up the backups                             
      version-control t      ; Use version numbers on backups,                  
      kept-new-versions 5    ; keep some new versions                           
      kept-old-versions 2)   ; and some old ones, too                           
Jorgen Schäfer
la source
1
;; put all backup files into ~/MyEmacsBackups
(setq backup-directory-alist '(("." . "~/MyEmacsBackups")))
(setq backup-by-copying t)
CyberSnoopy
la source
Quel avantage votre réponse a-t-elle sur les shosti?
Gilles 'SO- arrête d'être méchant'
@Gilles Pas beaucoup, gnu.org/software/emacs/manual/html_node/emacs/…
CyberSnoopy
0

Mettez ceci dans votre fichier init. Modifiez le chemin d'accès au répertoire de sauvegarde que vous avez choisi.

;;backup directory
(setq backup-directory-alist '(("" . "~/.emacs.d/emacs_backup")))
Nsukami _
la source