Мне нужно развернуть автоматизированный процесс (через 1-минутный скрипт cron), который ищет файлы tar в определенной директории. Если файл tar найден, он не попадает в соответствующее место, а затем файл tar удаляется.
Файлы tar автоматически копируются на этот сервер через SSH с другого сервера. В некоторых случаях файлы tar очень большие, с большим количеством файлов.
Проблема, с которой я ожидаю столкнуться: если для копирования файла tar на сервер требуется> 1 минуты, а скрипт cron запускается раз в минуту, он увидит файл .tar.gz и попытается выполнить распакуйте его, хотя файл tar все еще находится в процессе записи.
Есть ли способ (с помощью команд bash) проверить, записывается ли файл в данный момент, или это только частичный файл и т. Д.?
Одна из альтернатив, о которой я думал, - это скопировать файл с другим расширением (например .tar.gz.part
), а затем переименовать .tar.gz
после завершения передачи. Но я решил, что постараюсь выяснить, есть ли просто способ определить, является ли файл первым в командной строке ... Есть какие-нибудь подсказки?
rsync
использует временное имя файла во время передачи (по умолчанию) и только после того, как файл полностью передан, переименовывает его в фактическое имя файла.