将Emacs Tramp设置为存储本地备份

3
我喜欢emacs,但有些事情一直在困扰我。当我通过tramp编辑文件时,似乎无法让emacs存储本地备份。
目前,当我编辑本地文件时,一组旧版本会存储在/tmp/myusername/emacs_backup文件夹中。然而,当我通过tramp进行FTP时,旧版本不会被存储在那里(我认为它正在尝试将它们存储在远程位置?)。
以下是我的.emacs设置:
(defvar user-temporary-file-directory  
  (concat "/tmp/" user-login-name "/emacs_backup/"))  
(make-directory user-temporary-file-directory t)  
(setq make-backup-files t)  
(setq backup-by-copying t)  
(setq version-control t)  
(setq delete-old-versions t)  
(setq kept-new-versions 10)  
(setq backup-directory-alist `(("." . ,user-temporary-file-directory)))  
(setq tramp-backup-directory-alist backup-directory-alist)  
(setq tramp-auto-save-directory user-temporary-file-directory)  
(setq auto-save-list-file-prefix
      (concat user-temporary-file-directory ".auto-saves-"))  
(setq auto-save-file-name-transforms  
      `((".*" ,user-temporary-file-directory t)))

我不在意tramp su编辑器也存储在tmp文件夹中——在我看来,更多的就越好。非常感谢您的任何帮助!
4个回答

3

tramp-backup-directory-alist的文档说明:

(setq tramp-backup-directory-alist backup-directory-alist)

会为Tramp文件在其主机上提供与本地文件相同的备份策略。

我认为这意味着在远程机器("它们的主机")上备份tramp文件。从tramp.el的实现来看,这也是默认实现(如果未设置tramp-backup-directory-alist,则使用backup-directory-alist)。

Tramp假定远程文件的备份应始终是远程的,并在执行备份之前显式添加方法/用户/主机位。如果您想更改行为,我认为您必须建议tramp-handle-find-backup-file-name调整文件名(使其成为有效的本地文件名),并与backup-directory-alist中的条目协调。

顺便说一下:将备份放在临时文件目录中在长期运行中不会有太大帮助。 "临时"有点违背了备份的目的。


2

我也希望能在本地存储备份。我提交了一个错误报告,因为我认为tramp-backup-directory-alist已经损坏。在与Michael Albinus交谈后,我发现我误解了tramp-backup-directory-alist的用法,它是一种存储远程文件备份的方法。所以我应该这样做:

(add-to-list 'backup-directory-alist
             (cons tramp-file-name-regexp "/my/local/backup/"))

1

我成功找到了一个解决方法(我尝试通过tramp-backup-directory-alist进行设置,但显然tramp无法本地保存远程缓冲区)。与其使用内置备份,我找到了由Benjamin Rutt编写的elisp脚本:backup-each-save.el


1
重新定义trump-handle-find-backup-file-name对我有用。 它消除了想要在远程服务器上保存备份的行为。
(defun tramp-handle-find-backup-file-name (filename)
      "Like `find-backup-file-name' for Tramp files."
      (with-parsed-tramp-file-name filename nil
        (tramp-run-real-handler 'find-backup-file-name (list filename))))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接