Это выглядит как идеальная задача для rsync. Rsync сравнивает и копирует diff.
Утилита rsync впервые появилась в моем сознании, когда я увидел ваш вопрос. Выполнение чего-то вроде ниже может быстро показать, какие файлы находятся в каталоге a, но не в b:
$ rsync -rcnv a/* b/
-r will recurse into the directories
-c will compare based on file checksum
-n will run it as a "dry run" and make no changes, but just print out the files
that would be updated
-v will print the output to stdout verbosely
Это хороший вариант, потому что вы можете сравнить содержимое файлов, а также сделать уверен, что они совпадают. Дельта-алгоритм rsync оптимизирован для этого типа использования. Затем, если вы хотите, чтобы b соответствовал содержимому a, вы можете просто удалить параметр -n для выполнения фактической синхронизации.
Некоторые связанные вопросы:
https://stackoverflow.com/questions/19396718/compare-files-in-two-directory-on-remote-server-using-unix https://unix.stackexchange.com/questions/57305/rsync-compare-directories