Таких программ много. Это средства версионного контроля например git. Сделай git init в каталоге и делай каждый раз новый commit при резервном копировании. Для перемотки назад можно использовать стандартный git checkout с указанием хеша коммита или комменатрия или любого другого поискового признака которы ты знаешь как владелец бэкапа.
Беря во внимание что git все таки больше предназначен для текста чем для бинарей возможно в его использовании есть какие-то нюансы. Но я с ними не сталкивался пока. Можно еще почитать про git LFS
https://git-lfs.github.com/
Версионирование бекапов также встроено в файловую систему XFS. Там есть утилиты для dump/restore. Но мне их подход не очень понравился. Хлопотно.
UPD: Да еще. Забыл. Версионирование ФС (настоящее) точно встроено в докер overlay-fs. Но как им воспользоваться в случае автора я пока не знаю. Может знающие - подскажут.