尝试实现我的zsh终端历史记录(~/.zsh_ history )的智能备份。bash也是一样,没有区别,只是文件名为.bash_history。
到目前为止,我已经决定创建一个私人的git,因为我的历史可以包含秘密等等。我已经创建了一个ansible脚本(可以用bash脚本来完成),它创建了每月的dir,基本上每天都会将~/..zsh_history的内容复制到月度dir中,并以每日时间戳作为文件名。我已经把那个剧本写成了日常工作。
问题是有很多重复。一开始我以为可以在备份成功后删除历史文件的内容,但后来我意识到这意味着不需要递归搜索。现在,我正在考虑创建一个功能,与前一天相比,它只备份对历史的更改。如果今天的历史是命令(1,2,3),明天是(1,2,3,4,5)第二天的备份,我们只需要(4,5)而不是全部。有点像两组的交集(昨天的历史文件是一组,今天的是另一组(比包含昨天的一组大!)
做这件事最好的方法是什么?我没有找到类似的项目的其他例子,所以任何帮助都是值得赞赏的。
下面是历史文件中的几行以供参考:
: 1659932134:0;git commit -m "First initial best commit"
: 1659932139:0;git push
: 1659932147:0;git push -u origin main
: 1659932151:0;git push
: 1660008827:0;cat ~/.zshrc
: 1660008832:0;cat ~/.zsh_history例如,第二天的文件应该如下所示:
: 1659932134:0;git commit -m "First initial best commit"
: 1659932139:0;git push
: 1659932147:0;git push -u origin main
: 1659932151:0;git push
: 1660008827:0;cat ~/.zshrc
: 1660008832:0;cat ~/.zsh_history
+++++++++ ( this is just me adding to show the difference)
: 1659932113:0;git add .gitignore
: 1659932117:0;git add backups/
: 1659932119:0;git add hist_backup.yml发布于 2022-08-11 16:42:47
关于
那么,最好的方法是
因为记录所有运行的命令(由生产服务器上的管理员运行)是一个非常普遍的需求,所以auditd可能是这里的正确工具。
关于
我没有找到类似项目的其他例子
由于时间戳,可能您需要能够搜索,这似乎是一种数据库更适合您的用例,而不是git。因此,使用类似于在数据库中记录bash历史记录的方法是可能的。
关于
如何做智能备份?
您还可以通过rsync查看增量备份。
https://unix.stackexchange.com/questions/712962
复制相似问题