I have one particular folder on my linux box that I would like to have fully backed up and be able to "go back in time" on a file and see all previous revisions.

To add complications, this folder is shared (with the inbuilt sharing tools) and is accessed and written to by a Windows machine. For this reason, I'd like the backup to be written to a place where the windows machine does not have access.

How can I set this up?


Well I use the following script for my backup:

#! /bin/bash

# Gets date of most recent backup.    
newestfile=$(cd /home/<USERNAME>/.Backups && find . -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" ")        
budate=`echo $newestfile| cut -c10-19`

# Gets current date

cdate=$(date --iso)

# If the cureent date is the same as the date of the most recent backup, don't run the backup, just give a notification that says it has already been done today.

if [ $cdate = $budate ]; then
    echo "Backup Complete"
    notify-send -i /home/<USERNAME>/Pictures/Logos/safe.png "Backup Status" "Already started/finished backup for today."

# If the dates are different, start the backup.

    echo "Starting backup"
    notify-send -i /home/<USERNAME>/Pictures/Logos/safe.png "Backup Status" "Starting backup for today."
# Compresses the files into .tar.gz format 

    tar -cvpzf /home/<USERNAME>/.Backups/backup-$(date +%Y-%m-%d-%H:%M).tar.gz "/home/<USERNAME>/folder/to/back/up" --exclude=.Backups && notify-send --expire-time=60000 -i /home/tim/Pictures/Home/Logos/safe.png 'Backup Status' 'Finished backup for today.'

This will save a backup file that looks like this:


In the hidden folder /home/<USERNAME>/.Backups

The safe.png file that it used for the notifications can be downloaded from here.

  1. Save the script in /home/<USERNAME>/Scripts as backup.sh

  2. Run the following commands:

    chmod +x Scripts/backup.sh
    mkdir .Backups
    touch .Backups/backup-2000-01-01-00:00.tar.gz
  3. Then add the command Scripts/./backup.sh to the start at login applications. Even if you login more than one time in a day, you only get 1 backup.


    You could also use cron to run the script regularly. Edit it using crontab -e and add this line to the end:

    0 15 * * *    bash /path/to/script/backup.sh

My pronouns are He / Him

  • 1
    You could also use cron to execute it hourly, daily or weekly, depending on your needs. In this example, the script is executed daily at 3pm: Launch crontab via crontab -e and add the following line to the end 0 15 * * * bash /path/to/script/backup.sh – jnuk Jul 28 '14 at 12:44
  • @jnuk Thank's, I never have understood cron enough to use it in an answer. – Tim Jul 28 '14 at 12:45
  • It's actually pretty simple. There are even generators for it. – jnuk Jul 28 '14 at 12:57
  • @jnuk Cool! That makes it easier! – Tim Jul 28 '14 at 13:00

The solution I chose in the end was something called "Back In Time". I set the backup interval to 5 minutes and it backs up my specific folders to another location and allows me to go back through the snapshots it takes.



I did a little research and looked for GUI backup utilities that support at least Linux (they tended to be cross-platform). I also wanted good automation/interval capabilities. These are my 3 top picks, from what I read of reviews and can tell from intuition, all untested:

  1. Back In Time (See documentation for screenshots)
  2. fwbackups
  3. grsync (GUI for rsync)

Hopefully that helps save others some time. There are a lot of backup utilities out there, but few with solid-looking GUI's for Linux that seemed to be modern.

Honorable mention: Duplicati, though I've used it before on Windows and I wasn't very fond of its instability. My backups were getting corrupted or glitchy. Maybe in the long run they will fix these issues.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.