July 26, 2014
Tinysnip #2: Backup your important files
Time goes (too) fast. My previous tinysnip was already written more than two months ago. I bet there is no rush here, but sorry for the delay. It's hard to do everything we want, with only 24 hours per day (and sometimes without motivation).
I'm a fanatic, that's why I often try to improve my projects, my
configs and my scripts (I even rewrite them from scratch,
sometimes). Saving the deprecated files is very
interesting (compare versions with diff
). Instead of
doing cp file.1{,.backup}
, I've decided to write
something simpler:
BAK_EXT="BAK"
BAK_LIM=9
N=1
while true; do
if (( N > BAK_LIM )); then
p_err "You reached the limit (${BAK_LIM} .${BAK_EXT} files)"
fi
if [[ ! -f ${1}.${BAK_EXT}.${N} ]]; then
cp -- "$1" "${1}.${BAK_EXT}.${N}"
print -r -- "$1 copied to ${1}.${BAK_EXT}.${N}"
exit
fi
(( N++ ))
done
I can backup the required file, using bak thefoofile
.
The snippet is pretty simple, actually it's like a "rotation". It
tests the presence of the regular file thefoofile.BAK.1
.
If it exists, the name is incremented to thefoofile.BAK.2
and so on, until we are able to save it to thefoofile.BAK.X
(in that case, the limit is BAK.9
, but you could
increase it using BAK_LIM
). If you dislike the
extension BAK
, it's possible to change it. Now,
do backups!
The snippet is jailed on git and it's waiting for you.