diff options
Diffstat (limited to '.local/bin')
-rw-r--r-- | .local/bin/history-backup | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/.local/bin/history-backup b/.local/bin/history-backup new file mode 100644 index 0000000..b591e12 --- /dev/null +++ b/.local/bin/history-backup @@ -0,0 +1,32 @@ +#!/bin/sh +# [Source: +# http://lukas.zapletalovi.com/2013/03/never-lost-your-bash-history-again.html] +# +# This script creates monthly backups of the bash history file. Make sure you have +# HISTSIZE set to large number (more than number of commands you can type in every +# month). It keeps last 200 commands when it "rotates" history file every month. +# Typical usage in a bash profile: +# +# HISTSIZE=90000 +# source ~/bin/history-backup +# +# And to search whole history use: +# grep xyz -h --color ~/.bash_history.* +# + +KEEP=200 +BASH_HIST=~/.bash_history +BACKUP=$BASH_HIST.$(date +%y%m) + +if [ -s "$BASH_HIST" -a "$BASH_HIST" -nt "$BACKUP" ]; then + # history file is newer then backup + if [[ -f $BACKUP ]]; then + # there is already a backup + cp -f $BASH_HIST $BACKUP + else + # create new backup, leave last few commands and reinitialize + mv -f $BASH_HIST $BACKUP + tail -n$KEEP $BACKUP > $BASH_HIST + history -r + fi +fi |