Wednesday, August 17, 2011

Incremental Backup using tar

GNU tar currently provide following options to handle incremental backup

--listed-incremental=snapshot file (-g snapshot file)

--incremental (-G)


root# tar --create --file=archive1.tar listed-incremental=/var/log/usr.snar /usr

Above given command will create archive1.tar as incremental backup of /usr filesystem, additional metadata will stored in file /var/log/usr.snar file . If /var/log/usr.snar file not exist it will get created, the created archive will then level 0 backup.

Now suppose for the same above given example, if /var/log/usr.snar exist. Then above given will check which files get modified and only those files stored in archive, so that will be level 1 backup.

So the best option is take level 0 (full) backup first as following

root# tar --create --file archive1.tar --listed-incremental=/var/log/usr.snar

copy that file

root#cp /var/log/usr.snar /var/log/usr.snar-1

Then take incremental backup as follows

root#tar --create --file archive2.tar --listed-incremental=/var/log/usr.snar

To extract content from backup we also have to follow same steps which followed at the time of backup. In our example the procedure will be as follows

root# tar --extract --listed-incremental=/dev/null --file=archive1.tar

Followed by

root#tar --extract --listed-incremental=/dev/null --file=archive2.tar