Скопируйте или переместите файл в каталог с параллельной обработкой из другого процесса - PullRequest
0 голосов
/ 22 января 2020

Я запускаю два процесса в AIX. Процесс один генерирует несколько файлов, процесс два создает резервные копии из всех файлов, которые находятся в каталоге резервных копий.

Процесс один копирует или перемещает файлы в каталог резервных копий. Поскольку второй процесс всегда выполняется в фоновом режиме, существует риск запуска резервного копирования файла, который все еще находится в процессе копирования или перемещения и поэтому является неполным. Как я могу избежать этой проблемы?

1 Ответ

1 голос
/ 22 января 2020

Процесс должен создавать файлы в другом каталоге (на том же диске); и когда файл создан, переместите его в последний каталог. Move - это операция atomi c, поэтому process2 найдет только полные файлы.

Edit: в AIX / usr / bin / istat помогает убедиться, что две директории (или файлы) находятся на одном диске / раздел / устройство, например

for Dir in /home /home/zsiga /tmp;
    do /usr/bin/istat "$Dir" | grep device;
done

Результат:

Inode  2 on device 10/8 Directory
Inode 33 on device 10/8 Directory
Inode  2 on device 10/7 Directory

Первые два находятся на одном диске / разделе / ​​устройстве (10/8); последний находится на другом устройстве (10/7)

...