Не придумал, как в пару словах в заглавии описать всю глубину вопроса.
Нужно сделать бэкап файла. Для этого надо просчитать хэш-сумму и на её основе решать, нужно ли архивировать файл.
Однако, может случиться исключительная ситуация, когда между считыванием хэша и архивированием файл изменится, в результате хэш не будет соответствовать файлу в архиве. В таком случае можно сначала проверить, есть ли в системе открытые дескрипторы на запись файла, и скопировать его во временный каталог.
Но может случиться и следующая ситуация - во время(!) высчитывания хэша файл может измениться, потому что бэкап делается на живой системе, и в этот момент какая-то программа может писать в файл и получится какая-то хрень. По этой причине нельзя блокировать файл во время чтения.
Как это предотвратить? Что делать? >_<
Как вообще стоит корректно читать файлы для создания бэкапа?