I'm quite new to Ubuntu and want to create a backup. I'm really not sure what files and folders to include so that if I restore my system it will be as it is now. I can't seem to find good details of this anywhere. Hopefully someone could help me with this. Is it possible to backup everything as it is now so in the event of a system restore I don't have to reinstall programs and settings?
My backup sets currently contain
/var (except /var/run, /var/cache, /var/tmp) /srv /etc /root /home /usr (/usr/local only, nothing else)
Note this is for a server, so backing up things like /etc saves all my configuration for my services, I have web servers in /srv (though if you have them in /var/www, they would still be in this backup set), I have various scripts and things set up in /usr/local, etc. Backing up /home instead of /home/myusername is so that I can preserve all users. If all you want to keep is your user data, you only need your home directory.
What you need to backup depends on your particular system*.
So this is going to take a little work on your part to sort out. Start by figuring out what does not need to be backed up. First take a look at your root directory, and then work backwards.
cd /; ls -F gives me:
bin/ initrd.img@ mnt/ snap/ vmlinuz@ boot/ initrd.img.old@ opt/ srv/ vmlinuz.old@ cdrom/ lib/ proc/ sys/ dev/ lib64/ root/ tmp/ etc/ lost+found/ run/ usr/ home/ media/ sbin/ var/
/mnt are mount points so don't need backup.
/tmp get auto re-created on reboot. [I'm guessing the links:
/vmlinuz@, /vmlinuz.old@ get re-created on boot ubuntu reinstall (I'm not sure which).]
On my system
/root is empty (use
sudo -s to open a shell as root user to view it ... be careful to
exit immediately after you inspect
/snap is also empty. Perhaps it's a mount point.
/var contains variable data like system logging files, mail and printer spool directories, and transient and temporary files." I now back it up, except for /var/log. ref: http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/var.html)
/sbin presumably will get reloaded via a reinstall of Ubuntu unless you are doing system development work or something like that. You can either back these up or rely on a fresh install to recover them.
/home should be in it's own backup. There will be times when you will want to restore just
That leaves other changes you've made to your system in
/usr which you will want to also backup, either together or individually.
Here are a couple of pages that might help understand these directories:
A related line of thinking is: Say you just installed a fresh Ubuntu. What would you need to back up? Answer: nothing. You haven't changed anything yet, so you can simply reinstall Ubuntu. It restores /bin, /etc, /root, /usr, etc.
So the only reason you might want to backup /bin is because you have changed it or added to it. So part of backing up is understanding what is where and when it is created and modified. Just know that the rest of us struggle with this too.
*****And, although you didn't ask, one can make full disk or partition images. These take a lot of time to backup and restore and may leave your system down while that work is proceeding. And it's how I used to backup my Windows systems using Acronis. The one thing they provide you with is a partition map, and images from non-linux partitions. I now make these before I reorganize partitions, and before I test my backup restore functions.
(I'm very open to suggestions as to how I could make this better.)
If I reinstall my desktop system, I backup
/var, I'm too lazy to exclude some sub-folders
/home is on a separate partition and has a backup made every day.
After the reinstall, I restore the parts from my backup, which I really need.
With this strategy, all my configurations, local mails and crontab configurations are safe and I have to reinstall my needed applications only.
My personal scripts are saved in my home folder (daily backup, remember?), therefore I don't use
Most people just backup their home directory:
/home/$USER/. If you want to back up the configuration files and settings, those are stored in folders and files in your home directory that start with a . (dot). Make a list of packages that you use (and PPAs) and it will be easy to reinstall all your packages should you need. Or, use the command described in this comment.
Deja Dup Backup is a great tool that comes as a default on Ubuntu. Other options include command line (rsync, rsnapshot, rdiff-backup, etc).
Finally, to backup the whole disk as an image, check out clonezilla.
Let's collect a list of files here. I've made this post "community wiki."
Of course, it varies from person to person. Mine is used mainly as a web server and NFS server.
mkdir $MY_BACKUP_FOLDER cd $MY_BACKUP_FOLDER
sudo rsync -a --relative /var/spool/cron/crontabs .
sudo rsync -a --relative /etc/exports .
sudo rsync -a --relative /etc/sudoers .
sudo rsync -a --relative /etc/apache2/apache2.conf .
sudo rsync -a --relative /etc/auto* .
sudo rsync -a --relative /etc/fstab .
sudo rsync -a --relative /etc/hosts .
sudo rsync -a --relative /etc/samba/smb.conf .
sudo rsync -a --relative /etc/updatedb.conf .
home dir can be preserved if you do a ubuntu reinstall
Just a reminder if you're using DejaDup (or anything else really), also exclude any cloud storage folders (likely in your home), such as Dropbox. If you're paying for s3 storage this could be a bad mistake.
Use Deja Dup backup. It is provided by default. Go to settings and keep only root folder (
/) as "folders to include" and add media folder (
/media) in "folders to ignore".
Because of this, all your programs will be backed up in case of system damage (rare) except your other drives which normally remain unaffected.