Мені потрібно розгорнути автоматизований процес (через 1 хв. Cron script), який шукає файли tar у певному каталозі. Якщо файл tar-файлу знайдений, він не позначається відповідною локацією, а потім файл tar-файлу видаляється.
Файли tar автоматично копіюються на цей сервер через SSH з іншого сервера. У деяких випадках файли смоли надзвичайно великі, з великою кількістю файлів.
Проблема, яку я очікую для вирішення: Якщо для копіювання файлу tar на копію файлу потрібен> 1 хвилина, а сценарій cron запускається раз на хвилину, він перегляне файл .tar.gz і спробує зробити untar це, навіть незважаючи на те, що файл tar все ще знаходиться в процесі запису.
Чи є якийсь спосіб (за допомогою команд bash) перевірити, чи в даний момент файл записується, чи це лише частковий файл тощо?
Однією з альтернатив, про які я думав, було те, щоб файл було скопійовано як інше розширення файлу (як .tar.gz.part
), а потім перейменований на .tar.gz
після завершення передачі. Але я подумав, що я спробую розібратися, чи просто існує спосіб визначити, чи файл спочатку цілий у командному рядку ... Будь-які підказки?
rsync
використовується тимчасове ім’я файлу під час передачі (за замовчуванням), і лише після того, як файл буде повністю перенесений, перейменовує його у власне ім'я файлу.