Я бы рекомендовал использовать инструмент, разработанный для того, что вы описываете - rsync.
rsync сделает всю эту работу за вас. Он будет проверять файлы, измененные или новые, и проверять их (и оптимизировать, копируя только фрагменты измененного файла, а не весь файл) на целевой хост.
rsync -a mainfile.txt images/image1.jpg images/icons/icon1.png remotehost:/directory/to/sync/files/to
Если вы также хотите получить список файлов, которые были синхронизированы, вы можете настроить ведение журнала rsync, добавив:
-q --log-format="%f"
Однако даже это не похоже на то, что вы ищете. Похоже, вам нужна быстрая файловая система, а не частая копия.
Реплицирующая файловая система будет знать, что были внесены немедленные изменения (в конце концов, вы вносите их в файловую систему), и может вносить те же изменения на другой стороне. Никакой работы не требуется с вашей стороны после первоначальной настройки. Это может быть невозможно, вам придется описать ситуацию более полно.