编辑文本文件时是否可以有多个备份?

编辑文本文件时是否可以有多个备份?

Gedit据我所知,有medit两个文本编辑器可以让我保存备份。因此,如果我temp.txt在下次编辑它时创建一个名为 的文件,然后保存它,我将有一个名为 的备份temp.txt~

我的问题是:是否有一个文本编辑器允许我以串行方式命名备份,以便我可以拥有多个备份,以防万一我想返回到几个修订前存在的文件?例如,我有temp.txt最新版本和temp.bak.1temp.bak.2等等?

如果这是不可能的,是否有一些脚本会在每次创建备份时自动重命名备份,以便保留串行版本?即使是一个也temp.timestamp.txt很棒。

(我不介意使用nano文本编辑器的解决方案。)


我应该澄清一下,我不是编码员或程序员。我只想拥有我编辑的文本文件的早期版本。这些文本文件可能构成.css主题的一部分。因此,如果我编辑主题文件的某些方面,我可以返回一点,以防我不喜欢所做的更改。.rc.svg

答案1

有一个简单的方法可以使用 Mercurial 进行版本控制。首先安装它。

~/.hgrc要配置 Mercurial,请创建一个包含以下内容的文件:

[ui]
username = Your name <your mail>
verbose = True

如果您使用一些 Mercurial 服务器,您可以向此文件添加更多信息(阅读man hgrc)。

之后cd到包含文本文件的目录。例如:

> cd /tmp
> mkdir data && cd data
> cat > text_file.txt
Hello, this is a file.

您还可以添加任意数量的文件。之后我们必须初始化 Mercurial:

> hg init

默认情况下仍然没有文件,所以我们必须说 Mercurial,我们想要包含所有文件:

> hg st
? text_file.txt
> hg add    
adding text_file.txt
> hg st
A text_file.txt

现在我们做简单的提交:

> hg comm -m 'first run'
text_file.txt
committed changeset 0:87e90c949984

现在做一些修复并查看差异:

> cat >> text_file.txt 
Add one line.
> hg diff
diff -r 87e90c949984 text_file.txt
--- a/text_file.txt Mon Apr 01 12:52:14 2013 +0400
+++ b/text_file.txt Mon Apr 01 12:53:47 2013 +0400
@@ -1,1 +1,2 @@
 Hello, this is a file.
+Add one line.

现在,在 watch 之后进行另一个提交hg log:您将看到两个提交。

要返回到第一次提交,只需这样做:

> hg upd -r 0:87e90c949984
resolving manifests
getting text_file.txt
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> cat text_file.txt 
Hello, this is a file.

您会看到:文件是旧的。

现在恢复最后一个文件:

> hg upd                  
resolving manifests
getting text_file.txt
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> cat text_file.txt 
Hello, this is a file.
Add one line.

您也可以编写一个简单的脚本:

#!/bin/bash
while true; do
  hg commit -m "commit: $(date)"
  sleep 60
done

当你开始编辑文件时运行它,它会每分钟检查是否有更改,如果有更改,mercurial 将进行新的提交。另外,正如我在评论中提到的,您可以使用atcron进行自动提交。

答案2

我赞同使用的建议版本控制。它比保留备份文件更灵活、更可靠,而且易于设置。

尽管如此,如果您想要对备份文件(以及许多其他事情)进行精细控制,您可以使用 Emacs。设置version-control变量 tot进行编号备份,而不仅仅是每个会话保留一个备份文件(放入(setq version-control t)您的~/.emacs)。当您想要创建新备份时C-u C-x C-s按而不是仅按。C-x C-s

另一种方法是使用为您进行备份的文件系统,无论应用程序是否了解有关备份的任何信息。复制文件系统在任何目录树之上创建这样的文件系统。

答案3

Geany 还附带了一个合适的插件。我在 Lubuntu 13.10 上使用 Geany 1.23.1。点击工具,插件管理器显示这个:

插件管理器对话框

在这里,可以打勾Save Actions,然后,在编辑,插件首选项,可以设置如何保存备份:

保存操作对话框

答案4

虽然有点晚了,但您可以使用和标志nano(至少在当前的 Debian 版本 2.2.6 中)实现独特的备份功能。-B-C

来自 Debian 手册页:

   -B (--backup)
          When saving a file, back up the previous version of it to the  current  filename
          suffixed with a ~.

   -C dir (--backupdir=dir)
          Set  the  directory  where  nano  puts  unique  backup files if file backups are
          enabled.

要使其成为默认值,请为 nano 创建一个包含标志的 bash 别名,并将其放在适当的位置(添加下面的行/home/username/.bash_aliases对我有用):

alias nano='nano -BC /home/username/.nano_backups'

这将在指定目录中生成备份,例如:

$ ls /home/username/.nano_backups
!home!username!.bash_aliases~
!home!username!.bash_aliases~.1
!home!username!.bash_aliases~.10
!home!username!.bash_aliases~.11
!home!username!.bash_aliases~.12
[...]

相关内容