How to efficiently copy only modified files from a disk to external usb?
You're sort of describing what rsync
was designed for. From man rsync
:
Rsync finds files that need to be transferred using a "quick
check" algorithm (by default) that looks for files that have
changed in size or in last-modified time. Any changes in the
other preserved attributes (as requested by options) are made on
the destination file directly when the quick check indicates
that the file’s data does not need to be updated.
There's also a lot of guff about networking, but it's happy doing local too.
Essentially all you need is:
rsync -rtv /home/my_projects_linux /mounted_drive/my_projects_linux
There are a ton of options available but -rtv
will sync recursively, keeping the timecodes the same, while being verbose about what it's doing.
To answer your second question, a more fancy way to backup is rdiff-backup
.
rdiff-backup backs up one directory to another, possibly over a network. The target directory ends up a copy of the source directory, but extra reverse diffs are stored in a special subdirectory of that target directory, so you can still recover files lost some time ago. The idea is to combine the best features of a mirror and an incremental backup. rdiff-backup also preserves subdirectories, hard links, dev files, permissions, uid/gid ownership, modification times, extended attributes, acls, and resource forks.
And if you really want to go cloud-based: I use CrashPlan with a paid subscription. Then you never have to think about manual backups any more.
I know this question already has an accepted answer. However, I wanted to add a cross platform GUI solution as I see you also use windows. I use for the same purposes Freefilesync. It is also FLOSS.
The configuration is absolutely intuitive and you can save different synchronization jobs.
There is also a ppa, though it does not include the latest version for 14.04 at the moment. To install via ppa:
sudo apt-add-repository ppa:freefilesync/ffs
sudo apt-get update