Ротация файлов журнала Rsync

Я исправил эту проблему. Проблема возникла из-за синтаксической ошибки.

Ошибка была связана с положением символов " и '. Нужно было просто заменить ' на ", и тогда все заработало.

login=$(curl -X POST -H "ACCEPT-LANGUAGE:en"  -H "Content-Type: application/json;charset=utf-8"  -H "Accept-Encoding:gzip,deflate"   -H "Accept: application/json"  -H "Connection: keep-alive" -d  "{"serviceUuid":"${service_uuid}","password":"${password}"}"  HereTheUrl)

и

uuid=$(curl   -X POST -H "ACCEPT-LANGUAGE:en"   -H "Content-Type:application/json"   -H "Accept: application/json" -d  "{"username":"TheUserName"}"
2
26.05.2016, 16:15
2 ответа

Эту проблему лучше всего решать на этапе ротации, а не на этапе копирования и архивирования. Если вы измените ротацию журналов на дату файлов, а не дадите им порядковые номера, тогда для архивирования rsync не потребуется никакой логики для правильной работы ™.

Предполагая, что вы уже используете logrotate для вращения, это можно сделать с помощью параметра dateext . Но если приложение управляет собственной ротацией, его может быть сложнее настроить. Я знаю, что log4j также может добавлять даты к повернутым файлам, но это может не отображаться через конфигурацию и поэтому может потребовать изменения в приложении. Вы также можете отключить ротацию на уровне приложения и вместо этого использовать logrotate.

1
27.01.2020, 22:20

В конце передачи rsync проверяет, совпадает ли переданный файл с тем, который начали передавать. Если файлы не совпадают, он предупреждает вас об этом и переходит к следующему. Если у вас стоит --remove-source-files, он не будет удалять файл, который, по его мнению, был передан неправильно или не полностью.

При условии, что существует окно возможностей, в течение которого rsync может успешно передать файлы журнала, нет большого вреда в том, чтобы повторять rsync чаще - или даже повторять его до тех пор, пока он не будет успешным:

k=3
while test 0 -lt $k && k=$((k-1))
do
    rsync .... && break
    sleep 10
done

Если это не сработает, вам придется подумать о том, как сделать "моментальный снимок" файлов журнала на время, достаточное для копирования:

ssh -q remote_host 'mkdir -p rsync.tmp; cp -p *.log rsync.tmp/'
rsync -a --remove-source-files remote_host:/path/to/logs/rsync.tmp/*.log ....
0
27.01.2020, 22:20

Теги

Похожие вопросы