Emulating the Recycling Bin in bash

I just ran into a problem where I accidentally erased a file that was very important and could not recover from it (it was a monstrous statistical model that takes about 5 hours to re-train…). I decided I had enough of this and needed a way to be able to recover from those silly mistakes (apparently not making them in the first place just wasn’t an option…) I wondered if anybody ever run into this problem, and what was their personal solution? Here is what I found and tested today (it works pretty well).

I know that there are processes that backs up your whole $HOME on a regular schedule, I forget the name of this process, but that’s not exactly what I need. I always liked the idea of a “recycling bin” from the GUI Operating Systems like Windows (or KDE) and decided that that’s exactly what I needed. I found the next best thing on the internet (See John’s Bash Tools for his original post).

I simply put this in my .bashrc and now can use “junk” instead of “rm”… It’s a pretty neat little trick actually. I then can use “empty_junk” every now and then to keep the size of my home reasonable. I could even add “empty_junk” in my .bashrc so that it gets emptied everytime I log on (I won’t because I often log onto twice at the same time and would create problems…).

##############################
# Emulating a reclycling bin #
##############################
# This function creates a directory called .junk
# and creates directories labeled by the date
# inside of this directory. Then, when a file is
# "junk"ed, it is actually just moved to this
# directory. The command line accepts as many
# files as you would care to junk, and can even
# work on entire directories. Be careful, since it
# is really just a wrapped "mv" command, you may
# overwrite your junked files if they both have
# the same name and end up in the root directory.
 
function junk () {
    TODAY=$(date +%d-%m-%y)
    if [ ! -e $HOME/.junk/$TODAY ]
    then
        mkdir -p $HOME/.junk/$TODAY
    fi
 
    for x in $@
    do
        mv $x $HOME/.junk/$TODAY
    done
}
 
# A very simple function to empty the trash.
# I set -Ri so that it recurses but prompts you.
 
function empty_junk () {
    rm -Ri $HOME/.junk/*
}
Share:
  • Digg
  • del.icio.us
  • Facebook
  • NewsVine
  • LinkedIn

0 Response to “Emulating the Recycling Bin in bash”


  • No Comments

Leave a Reply





coolphotoblogs Photo Blog Blogsbonuel at flickrvfxy W