Gedit
据我所知,有medit
两个文本编辑器可以让我保存备份。因此,如果我temp.txt
在下次编辑它时创建一个名为 的文件,然后保存它,我将有一个名为 的备份temp.txt~
。
我的问题是:是否有一个文本编辑器允许我以串行方式命名备份,以便我可以拥有多个备份,以防万一我想返回到几个修订前存在的文件?例如,我有temp.txt
最新版本和temp.bak.1
,temp.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 将进行新的提交。另外,正如我在评论中提到的,您可以使用at
或cron
进行自动提交。
答案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
[...]