O Snapper começou recentemente a executar instantâneos duplicados a cada hora

0

Nos últimos dois anos, o Snapper tem funcionado perfeitamente para realizar instantâneos de hora em hora (na hora). Há alguns dias, notei que dois instantâneos estão sendo tirados a cada hora. Um na hora (HH: 00), e o outro em 1 minuto após a hora (HH: 01)

O arquivo de log do snapper mostra o mesmo ID do processo para o libsnapper para ambos os instantâneos duplicados. A cada hora, há um novo ID do processo, mas os instantâneos duplicados são executados pelo mesmo ID do processo, de acordo com os logs. Nos logs, as coisas parecem normais. O trabalho é simplesmente repetido duas vezes, pelo que eu posso ver.

snapper list-configs não tem configurações duplicadas.

Eu sempre tive um temporizador systemd ativado e iniciado para snapper-timeline.timer (que foi configurado de acordo com Arch's página wiki do Snapper .

Eu não tenho um cron do root:

# crontab -l
no crontab for root

Até onde eu sei, não há cronômetro para nenhum usuário: /var/spool/cron/ está vazio.

Aqui está a coisa realmente estranha. Depois de parar e desativar snapper-timeline.timer , os instantâneos na hora param, mas os instantâneos 1 minuto após a hora continuam. Isso é verdade mesmo depois de uma reinicialização.

Após a etapa acima, não há entradas snapper-timeline.timer listadas por systemctl:

$ systemctl --user list-timers
0 timers listed.
$ sudo systemctl list-timers
NEXT                         LEFT          LAST                         PASSED        UNIT                         ACTIVATES
Wed 2018-02-21 00:00:00 EST  1h 40min left Tue 2018-02-20 00:00:00 EST  22h ago       logrotate.timer              logrotate.service
Wed 2018-02-21 00:00:00 EST  1h 40min left Tue 2018-02-20 00:00:00 EST  22h ago       man-db.timer                 man-db.service
Wed 2018-02-21 00:00:00 EST  1h 40min left Tue 2018-02-20 00:00:00 EST  22h ago       shadow.timer                 shadow.service
Wed 2018-02-21 03:54:50 EST  5h 35min left Tue 2018-02-20 03:54:49 EST  18h ago       snapper-cleanup.timer        snapper-cleanup.service
Wed 2018-02-21 03:59:50 EST  5h 40min left Tue 2018-02-20 03:59:49 EST  18h ago       systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Mon 2018-02-26 00:00:00 EST  5 days left   Mon 2018-02-19 00:00:23 EST  1 day 22h ago fstrim.timer                 fstrim.service

Atualização:

Como sabemos na página do Arch Wiki Snapper , em "Instantâneos automáticos da linha do tempo":

If you have a cron daemon, this feature [automatic hourly snapshots] should start automatically.

Como eu disse acima, verifiquei crontab -l como root e como meu usuário e ambos estavam vazios.

No entanto, no meu caso eu tenho o cronie instalado (o cronie é um daemon do cron). A procura em /etc/cron.daily/ mostrou um arquivo snapper e /etc/cron.hourly/ também contém um arquivo snapper.

As demais perguntas são:

  1. qual crontab do usuário mostraria o cronjob do Snapper?

  2. Existe uma maneira de tornar inativo o cronjob do Snapper que persistirá nas atualizações do pacote (mantendo o timer do systemd ativo)? Presumo que, se eu simplesmente excluir as entradas em /etc/cron.daily e /etc/cron.hourly/ ', elas serão substituídas quando o pacote do Snapper for atualizado. [UPDATE 2: Eu fiz um teste que confirma essa suposição. Veja os comentários.]

por MountainX 21.02.2018 / 03:51

1 resposta

1

O crédito por essa resposta vai para @jasonwryan.

Como sabemos na página do Arch Wiki Snapper , em "Instantâneos automáticos da linha do tempo":

If you have a cron daemon, this feature [automatic hourly snapshots] should start automatically.

Eu verifiquei crontab -l como root e como meu usuário e ambos estavam vazios.

No entanto, no meu caso eu tenho o cronie instalado (o cronie é um daemon do cron). A instalação do pacote coloca um script de limpeza da linha de tempo do Snapper em /etc/cron.daily/ e o script de instantâneo por hora em /etc/cron.hourly/ . (Ele faz isso mesmo se as unidades systemd do Snapper estiverem ativadas.)

Se você preferir usar os temporizadores do systemd, mas manter um daemon do cron para algumas tarefas ímpares, o Snapper favorecerá o daemon do cron.

Supondo que seja necessário manter o daemon do cron instalado (como eu faço), mas desejar gerenciar os timers do Snapper com o systemd, a solução (graças a @jasonwryan) é a seguinte:

  1. Edite /etc/pacman.conf '

  2. remova o comentário da diretiva NoExtract (se comentada).

  3. adicione os dois arquivos a seguir do pacote Snapper à diretiva NoExtract

    etc / cron.daily / snapper etc / cron.hourly / snapper

A sintaxe para adicionar vários arquivos é discutida aqui:

pacman.conf NoExtract sintaxe para filelist em várias linhas / Pacman & Problemas de atualização de pacotes / Fóruns do Arch Linux

Exemplo de linha resultante em /etc/pacman.conf:

NoExtract = etc/cron.daily/snapper etc/cron.hourly/snapper

A solução funciona para mim com o cronie, mas se você usar um daemon de cron diferente, seus caminhos podem ser diferentes.

    
por 22.02.2018 / 02:16