Assuming you're using btrfs, just use snapshots. You can also make use of Snapper to automate the whole thing, including setting up hooks for pacman so that it automatically takes a snapshot before an update.
And for portability/reproducibility of your OS config, just backup your dotfiles:
rsync -avh --exclude={'.local/share/Trash','.Trash-1000','.cache','/[^.]*'} ~/ /mnt/backupfolder/ --delete
and package list.
And for your personal documents, just use your favorite own/cloud service provider's tool.