Under Linux, that software already ships with your distro: it's called RSync, and works locally as well as with remote devices.
RSync only copies "changed stuff" – which would remove your fear concerning your large folders & sizes. If both drives are connected to the same device, you can run it using any (unsecured) protocol; for remote drives, you can run it via SSH:
rsync -Pae ssh /source/path [[user@]remote-machine:]/target/path
would be an example how I keep a remote location updated (add the --delete
parameter to take care for deleted files as well). You can find a bunch of examples in the linked Wikipedia page as well. It even offers a "dry-run" mode if you just want to check "what would happen".
There're several tools and graphical front-ends to RSync (if you're rather the "GUI guy/girl"). One of the tools listed in that section is Unison – which might be another candidate to check, especially if you're after bi-directional synchronisation (see below).
I'm very satisfied with RSync: it runs stable, fast, reliable. But admittedly, I've only used it "uni-directional" (to keep a remote location updated), not "bi-directional" (keeping two folders in "perfect sync").
Edit:
If you're looking for a GUI, I'd recommend starting with LuckyBackup:
LuckyBackup (Source: SourceForge; click images for larger variants)
As the screenshots show, this software not only makes it very user-friendly to setup your sync jobs (especially when not feeling that comfortable with command-line), but also includes a scheduler – so you wouldn't even have to deal with Cron jobs manually. It offers an easy way even to exclude files, and run additional jobs connected to the sync process.