![Какие параметры rsync использовать для указанного ниже сценария?](https://rvso.com/image/658732/%D0%9A%D0%B0%D0%BA%D0%B8%D0%B5%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B%20rsync%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D0%B4%D0%BB%D1%8F%20%D1%83%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BD%D0%B8%D0%B6%D0%B5%20%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D1%8F%3F.png)
Привет !!!
Это касается определенного требования к rsync, которого мы пытаемся достичь. Мы пытались достичь этого, используя различные опции rsync. Однако мы сталкиваемся с различными проблемами с различными опциями rsync.
Предыстория: • У нас есть процесс (работающий на AIX), журналы которого регистрируются в A.log (присутствует в каталоге журналов). • A.log ротируется в A.CURRENT_DATE_TIME.log, как только он достигает 100 МБ, и создается новый A.log. • Мы передаем эти журналы на централизованный сервер с помощью rsync. Мы используем rsync для всего каталога журналов. • INODE файлов на исходном сервере и на целевом сервере различаются. • После того, как журналы находятся на централизованном сервере, идея состоит в том, чтобы заставить эти журналы читаться/индексироваться централизованным процессом журналирования, который будет выбирать входные данные с этого централизованного сервера.
Проблема: • Хотя A.log (сервер назначения) указан в качестве входных данных для централизованного процесса журнала, он учитывает INODE файла, а не фактическое имя файла. • Таким образом, когда файл A.log сворачивается, новый A.log имеет новый INODE, который не обнаруживается централизованным процессом. Это происходило, когда мы использовали опции -u –r –t с rsync. Таким образом, в этом случае INODE файла менялся каждый раз, когда происходил rsync, а также когда происходила смена. Следовательно, процесс останавливает индексацию, поскольку он ищет старый INODE, которого нет.
• Идея заключается в использовании rsync с комбинацией параметров, которые не изменят INODE файла во время rsync, но должны изменить INODE во время смены, когда A.log вращается в A.CURRENT_DATE_TIME.log. Поэтому, чтобы добиться этого, мы включили параметр –inplace, и мы можем сохранить INODE во время rsync и INODE изменяется во время смены файла. Однако теперь это дает нам другую проблему, когда имя файла не меняется и всегда остается A.log. Поэтому, как только процесс завершает индексацию A.log, он останавливается.
Было бы здорово, если бы кто-то мог предложить что-то, что могло бы помочь нам в достижении указанных требований.
С уважением, Пунит Синха Администратор промежуточного программного обеспечения
решение1
Я не рекомендую полагаться на inode. Он будет меняться каждый раз, когда файл перемещается с исходной машины на целевую. Он также изменится, если файлы будут восстановлены из резервных копий. Если система обработки журналов зависит от inode, то если вы когда-либо восстановитесь из резервных копий, система не будет работать так, как вы ожидали.
Я рекомендую НЕ копировать A.log, а только копировать A.CURRENT_DATE_TIME.log. Это упростит проект.
Я подозреваю, что система обработки журналов на целевом сервере просматривает inode, чтобы определить, является ли файл, который он ранее видел как A.log, теперь A.CURRENT_DATE_TIME.log. Это не будет надежным.
У вышеприведенного решения есть 1 проблема: время, необходимое для генерации строки в файле журнала до ее обработки централизованным процессом журнала, увеличится. Например, если A.log требуется 3 дня, чтобы вырасти до 100 МБ, то ничего из этого файла не попадет в централизованный процесс журнала в течение 3 дней. Если журналы нельзя задержать более чем на 2 часа, то я бы ротировал журналы каждый час. Таким образом, вы будете знать, что находитесь в пределах 2-часовой цели.