2015-02-06 9 views
2

У меня есть сценарий резервного копирования (backup.sh), который ssh ​​переходит на другую машину, сжимает файл, а затем scp этот файл (backup_data.tar.gz) возвращается на мою локальную машину. У меня также есть LogRotate файл на моей локальной машине:logrotate: можете ли вы запустить постротат, даже если журнал не вращается?

/opt/backups/backup_data.tar.gz { 
    nocompress 
    daily 
    rotate 7 
    extension .tar.gz 
    missingok 
    postrotate 
     /opt/backups/backup.sh 
    endscript 
} 

Таким образом, первый раз Logrotate выполняется, файл журнала, чтобы вращать не существует (так как сценарий backup.sh не был выполнен еще). У меня есть missok, поэтому он перемещается и не выдает ошибку, но не кажется, что backup.sh выполняется, поскольку после первого запуска backup_data.tar.gz все еще не существует. Я считаю, что postrotate выполняется только в том случае, если файл повернут, есть ли способ обойти это и заставить его выполнить независимо?

ответ

1

logrotate будет запускать только сценарии (prerootate, postrotate, firstaction, lastaction), если по крайней мере один файл журнала был повернут. Запуск процесса, запустив backup.sh, будет работать, но если это произойдет, то в будущем у вас не будет новых резервных копий, пока вы не вмешаетесь.

Я бы создал отдельный файл конфигурации logrotate, например.

/opt/backups/logrotate.conf:

/opt/backups/backup_data.tar.gz { 
    nocompress 
    daily 
    rotate 7 
    extension .tar.gz 
    missingok 
} 

Следующая модифицировать backup.sh и вставить вызов logrotate в верхней части сценария:

logrotate --state=/opt/backups/logrotate.state /opt/backups/logrotate.conf 

И, наконец, установить backup.sh запускать ежедневно, например, crontab -e/sudo crontab -e -u backupuser:

15 2 * * * /path/to/backup.sh 

 Смежные вопросы

  • Нет связанных вопросов^_^