If you love to tweak your Linux system on the go, you probably have a lot of modified (and added) configuration and system files. What if you want to take a backup of those files before doing an upgrade? There are simple ways to accomplish things on Linux without installing new packages. Here’s what I do.

Maintain a list of modified files in a plain text file, each entry separated by a newline. Whenever you modify a file, add it to this list. Use absolute paths so that it’s easy to replace the files when restoring (you’ll see). Here’s an example list: $ cat list.txt /home/neo/.bashrc /home/neo/.vimrc /home/neo/.config/smplayer/smplayer.ini /opt/tor-browser_en-US/Docs/ChangeLog.txt

Save the following shell script in a file: #!/bin/bash #file: take_backup.sh lt_red='\e[1;31m' BACKUP_DIR=backup-$(date "+%Y_%m_%d_%H_%M_%S") mkdir $BACKUP_DIR cat $1 | xargs cp --parents -t $BACKUP_DIR cd $BACKUP_DIR tar -jcvf ../$BACKUP_DIR.tar.bz2 * cd .. rm -rf $BACKUP_DIR echo -e ${lt_red}Backed-up in $BACKUP_DIR.tar.bz2

Make it executable: $ chmod +x take_backup.sh

To take a backup: $ ./take_backup.sh list.txt The script is in verbose mode to show every file being backed-up. It will show the final archive name in light red.

The directory structures are preserved. So you can restore all the files using: $ tar -xvf backup-timestamp.tar.bz2 -C /

This is a basic script. You can modify and extend it to meet your needs. It does need manual entry into the list of files. But on your box you are the best one to choose what you want to save.