Entendendo os agendamentos e Nomenclaturas - Dúvidas

320 views
Skip to first unread message

Pedro Henrique

unread,
Feb 15, 2017, 5:11:54 PM2/15/17
to Bacula Backup-Pt-Br
Pessoal, boa noite.

Tenho duas dúvidas, antes de mais nada já estou me programando pra fazer, os Bacula 1, 2 e 3, já até comprei e estou providenciando o livro do Heitor. Mas agora preciso de tempo..

Eu estou aprendendo sobre o bacula, e tenho algumas dúvidas sobre os agendamentos, alguém aqui saberia me responder se eu entendi da maneira correta o backup padrão do bacula?
A versão que estou usando é o Bacula 7, estou em ambiente virtual para aprender sobre a ferramenta, para depois aplica-la no meu trabalho
  • O primeiro “Run = Full 1st sun at 23:05” está indicando que um backup Full rodará todo primeiro domingo do mês iniciando às 23:05.
  • O segundo “Run = Differential 2st-5th sun at 23:05” está indicando que, do segundo ao quinto domingo do mês (porquê existem meses que temos 5 domingos), ele fará um backup diferencial iniciando às 23:05.
  • O terceiro “Run = Incremental mon-sat 23:05” está indicando que ele fará um backup incremental de segunda a sexta-feira, iniciando às 23:05.


As formas que os backups são organizados, as nomenclaturas para ser mais certo,vi em vídeo até mesmo no arquivo que o padrão é "vol-", então todo backup tem esse nome, vol-0001, vol-0002 e etc.
Eu fazia um backup via script nos meu servidores, porém tive um problema de hardware e sistema e não consegui fazer novamente, devido as paginas que usei não estarem mais disponíveis.
A organização ficava por data:

Exemplo:

Fev-09-02-2017
Fev-08-02-2017
Fev-07-02-2017

Como era de script, ele fazia full todos os dias, infelizmente. =(
Mas, agora isso vai mudar =)

Teria como fazer algo assim bacula?

Sempre que o backup for Full:

Full-Fev-02-2017

Sempre que o backup for Diferencial:

Dif-Fev-02-2017

Sempre que o backup for Incremental:

Inc-Fev-02-2017


motivo da minha dúvida:
Como saberei em qual volume procurar determinado arquivo?


Pode ser pergunta boba, mas como estou aprendendo acho que não custa perguntar. Então espero que os mestres da ferramente me deem um clareamento das ideias sobre essa parte.

Wanderlei Huttel

unread,
Feb 15, 2017, 6:56:08 PM2/15/17
to bacula-ba...@googlegroups.com


Atenciosamente 

Wanderlei Hüttel

Em 15 de fevereiro de 2017 20:11, Pedro Henrique <phrd...@gmail.com> escreveu:
Pessoal, boa noite.

Tenho duas dúvidas, antes de mais nada já estou me programando pra fazer, os Bacula 1, 2 e 3, já até comprei e estou providenciando o livro do Heitor. Mas agora preciso de tempo..

Eu estou aprendendo sobre o bacula, e tenho algumas dúvidas sobre os agendamentos, alguém aqui saberia me responder se eu entendi da maneira correta o backup padrão do bacula?
A versão que estou usando é o Bacula 7, estou em ambiente virtual para aprender sobre a ferramenta, para depois aplica-la no meu trabalho
  • O primeiro “Run = Full 1st sun at 23:05” está indicando que um backup Full rodará todo primeiro domingo do mês iniciando às 23:05.
  • O segundo “Run = Differential 2st-5th sun at 23:05” está indicando que, do segundo ao quinto domingo do mês (porquê existem meses que temos 5 domingos), ele fará um backup diferencial iniciando às 23:05.
  • O terceiro “Run = Incremental mon-sat 23:05” está indicando que ele fará um backup incremental de segunda a sexta-feira, iniciando às 23:05.
Isso mesmo. Você deve ainda especificar as Pools no schedule pra ficar certinho. 


As formas que os backups são organizados, as nomenclaturas para ser mais certo,vi em vídeo até mesmo no arquivo que o padrão é "vol-", então todo backup tem esse nome, vol-0001, vol-0002 e etc.
Eu fazia um backup via script nos meu servidores, porém tive um problema de hardware e sistema e não consegui fazer novamente, devido as paginas que usei não estarem mais disponíveis.
A organização ficava por data:
O prefixo "vol" é por causa da opção LabelFormat configurado na Pool (LabelFormat = "Volume-Diario-" )
Volume-Diario-

Exemplo: 

Exemplo:

Fev-09-02-2017
Fev-08-02-2017
Fev-07-02-2017
 Esse tipo de nomenclatura de volume é uma preocupação de todo principiante no Bacula.
Mas por experiência digo que não é necessário, pois o Bacula gerencia muito bem os volumes.
Esse tipo de nomenclatura seria mais utilizado se fosse gerado volumes únicos por dia, sem reciclagem e com uma prazo de retenção mais elevado, mas mesmo assim não é necessário.

Como era de script, ele fazia full todos os dias, infelizmente. =(
Mas, agora isso vai mudar =)

Teria como fazer algo assim bacula?

Sempre que o backup for Full:

Full-Fev-02-2017

Sempre que o backup for Diferencial:

Dif-Fev-02-2017

Sempre que o backup for Incremental:

Inc-Fev-02-2017

Você vai precisar criar 3 Pools distintas (Full, Differential e Incremental) e cada uma vai ter o LabelFormat 
Eu recomendaria criar apenas como
Pool Full = LabelFormat  = Volume-Full-
Pool Differential = LabelFormat  = Volume-Differential-
Pool Incremental = LabelFormat  = Volume-Incremental-


motivo da minha dúvida:
Como saberei em qual volume procurar determinado arquivo?
O Bacula separa os backups por Jobs. No caso um cliente vai ter vários Jobs (Full, Differential e Incremental ). Você pode restaurar por Job individual ou restaurar o backup mais recente de um cliente por exemplo, onde o Bacula busca o backup full + backup incremental/backup diferencial.

Tenho um exemplo de configurações em arquivos separados que facilitam o aprendizado:

Já que você está começando, recomendo a instalar a versão 7.4.5.

Qualquer coisa estamos ai

Abraço e boa sorte!


Pode ser pergunta boba, mas como estou aprendendo acho que não custa perguntar. Então espero que os mestres da ferramente me deem um clareamento das ideias sobre essa parte.

--
Você recebeu essa mensagem porque está inscrito no grupo "Bacula Backup-Pt-Br" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para bacula-backup-pt-br+unsub...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para bacula-backup-pt-br@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/bacula-backup-pt-br.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/bacula-backup-pt-br/1d8dfff0-f5ff-4a33-9ce2-c74627b39cb7%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Pedro Henrique

unread,
Feb 15, 2017, 10:04:49 PM2/15/17
to Bacula Backup-Pt-Br
+Wanderley, eu entendi mas não compreendi, deve ser porque estou aprendendo ainda...e como é muita coisa para absorver da aquele "bug" no cérebro.

- Não entendi muito bem como funciona os pools, realmente até procurei algo na internet para entender melhor, mas não entendi 100%.
  •  O pool é responsável pela forma que é feita o backup?
  • Se eu entendi bem,eu faria um pool para cada um dos jobs, correto? por exemplo:

# Configuração da Pool Full 
Pool{
  Name                 = "Pool-Full"         # Nome da Pool
  Pool Type            = Backup                 # Tipo da Pool
  Recycle              = yes                    # Pode reciclar a Pool
  AutoPrune            = yes                    # Limpar dados do catálogo automaticamente
  Volume Retention     = 30 days                # Tempo de retenção do volume
  Volume Use Duration  = 23 hours               # Tempo que o volume permanece aberto para escrita
  LabelFormat          = "Volume-Full"  
  Maximum Volume Bytes = 4GB                    # Tamanho máximo de cada volume
  Maximum Volumes      = 10                     # Número máximo de volumes

}

# Configuração da Pool Differential
Pool{
  Name                 = "Pool-Dif"             # Nome da Pool
  Pool Type            = Backup                 # Tipo da Pool
  Recycle              = yes                    # Pode reciclar a Pool
  AutoPrune            = yes                    # Limpar dados do catálogo automaticamente
  Volume Retention     = 30 days                # Tempo de retenção do volume
  Volume Use Duration  = 23 hours               # Tempo que o volume permanece aberto para escrita
  LabelFormat          = "Volume-Differential"  
  Maximum Volume Bytes = 4GB                    # Tamanho máximo de cada volume
  Maximum Volumes      = 10                     # Número máximo de volumes

}

# Configuração da Pool Pool-Incremental 
Pool{
  Name                 = "Pool-Incremental"     # Nome da Pool
  Pool Type            = Backup                 # Tipo da Pool
  Recycle              = yes                    # Pode reciclar a Pool
  AutoPrune            = yes                    # Limpar dados do catálogo automaticamente
  Volume Retention     = 30 days                # Tempo de retenção do volume
  Volume Use Duration  = 23 hours               # Tempo que o volume permanece aberto para escrita
  LabelFormat          = "Volume-Full"  
  Maximum Volume Bytes = 4GB                    # Tamanho máximo de cada volume
  Maximum Volumes      = 10                     # Número máximo de volumes

}


# Agenda GFS Noite
Schedule {
  Name = "Agendamento"
  Run = Level=Full             Pool=Pool-Full   on 1st sun at 23:30  # Backup Full primeiro domingo do Mes
  Run = Level=Differential     Pool=Pool-Differential    on friday  at 23:30  # Diferencial toda sexta-feita (Não sei se está certo)
  Run = Level=Incremental      Pool=Pool-Incremental   on mon-sat at 23:30  # Incremental de Segunda a Sabado.
}

lembrando que isso é um exemplo. rsrs
Seria também um JobDefs { } para cada pool?

Não sei se essa é a melhor forma de trabalhar, mas estou peguntando para entender.

- Eu entendi sobre como mudar os nomes dos volumes, é a forma que definimos no pool que deve ser colocada também no Schedule.
- O exemplo acima tirei dos seus arquivos, também estou tentado aprender de forma mais organizada, separando todos os campos, filesets, client and jobs etc.

Desculpa a quantidade de informação.
E obrigado pelos esclarecimentos.
Para postar nesse grupo, envie um e-mail para bacula-ba...@googlegroups.com.

Wanderlei Huttel

unread,
Feb 16, 2017, 4:38:17 AM2/16/17
to bacula-ba...@googlegroups.com
Olá Pedro

Em 16 de fevereiro de 2017 01:04, Pedro Henrique <phrd...@gmail.com> escreveu:
+Wanderley, eu entendi mas não compreendi, deve ser porque estou aprendendo ainda...e como é muita coisa para absorver da aquele "bug" no cérebro.

- Não entendi muito bem como funciona os pools, realmente até procurei algo na internet para entender melhor, mas não entendi 100%.
  •  O pool é responsável pela forma que é feita o backup?
A pool é um conjunto de volumes, geralmente serve para separar tipos de backup e/ou retenções diferentes.
Eu costumo usar 3 Pools (Diaria - 30 dias retenção, Semanal - 30 dias de retenção e Mensal e 12 meses de retenção)
  • Se eu entendi bem,eu faria um pool para cada um dos jobs, correto? por exemplo:
Até existe essa possibilidade, mas não é necessário. O ideal é você analisar o seu ambiente e e verificar o espaço que você tem para fazer o backup e talvez separar em Pools Diarias, Semanal e Mensal, que seria o esquema GFS (Grandfather, Father and Son)
O JobDefs é uma espécie de modelo de job para não precisar ficar digitando todas as opções necessárias.
No caso todos os Jobs vão possuir as informações contidas no JobDefs e mais o que está definido no próprio Job. 
Quando você configura alguma opção no Job esse sobrescreve a opção que está no JobDefs (o Job tem precedência sobre o JobDefs) e a Pool do Schedule também tem precedência sobre o JobDefs e Job.

Não sei se essa é a melhor forma de trabalhar, mas estou peguntando para entender.

- Eu entendi sobre como mudar os nomes dos volumes, é a forma que definimos no pool que deve ser colocada também no Schedule.
Você coloca a Pool no schedule para salvar os backups corretos nas devidas Pools, pois um Job vai estar em mais de uma Pool geralmente.
- O exemplo acima tirei dos seus arquivos, também estou tentado aprender de forma mais organizada, separando todos os campos, filesets, client and jobs etc.

Na verdade no começo é um pouco complicado, pois o Bacula permite inúmeras configurações, mas depois que você entende sua lógica é mamão com açúcar heheheh 

Desculpa a quantidade de informação.
E obrigado pelos esclarecimentos.


Message has been deleted

Pedro Henrique

unread,
Feb 16, 2017, 12:54:21 PM2/16/17
to Bacula Backup-Pt-Br
- Não entendi muito bem como funciona os pools, realmente até procurei algo na internet para entender melhor, mas não entendi 100%.
  •  O pool é responsável pela forma que é feita o backup?
A pool é um conjunto de volumes, geralmente serve para separar tipos de backup e/ou retenções diferentes. 
Eu costumo usar 3 Pools (Diaria - 30 dias retenção, Semanal - 30 dias de retenção e Mensal e 12 meses de retenção)

- Então eu entendi corretamente como funciona as Pools, agora que você deu essa luz. Cada Pool, com essa necessidade, trabalharia em um job especifico.


Até existe essa possibilidade, mas não é necessário. O ideal é você analisar o seu ambiente e e verificar o espaço que você tem para fazer o backup e talvez separar em Pools Diarias, Semanal e Mensal, que seria o esquema GFS (Grandfather, Father and Son)

- Não entendi muito bem, mas estou trabalhando para entender melhor esse esquema de agendamento GFS. Trabalho em uma faculdade. Colocarei os servidores para fazer um backup Full a cada três meses, Incremental diariamente e  todo final de semana. Ainda estou estudando melhor isso.
 
Seria também um JobDefs { } para cada pool?
O JobDefs é uma espécie de modelo de job para não precisar ficar digitando todas as opções necessárias. 

- Eu verifiquei agora nos arquivos, é um modelo, realmente.
 
No caso todos os Jobs vão possuir as informações contidas no JobDefs e mais o que está definido no próprio Job.
Quando você configura alguma opção no Job esse sobrescreve a opção que está no JobDefs (o Job tem precedência sobre o JobDefs) e a Pool do Schedule também tem precedência sobre o JobDefs e Job.

- Ainda não assimilei muito bem, mas estou começando a entender,  eu teria que criar uma JobDefs (que são as definições do job, forma que irá trabalhar, Pool que irá usar, Schedule, nível de backup, etc..), e, em cada job, colocar qual JobDefs ele vai usar., Abaixo tenho um exemplo de configuração de JobDefs. Lá em Job, no campo JobDef =, eu seleciono o "modelo de JobDefs" que irei usar para aquele Job.




JobDefs {
  
Name = "DefaultJob"
  
Type = Backup
  
Level = Incremental
  
Client = bkpserver-fd
  
FileSet = "Full Set"
  
Schedule = "WeeklyCycle"
  
Storage = File
  
Messages = Standard
  
Pool = File
  
SpoolAttributes = yes
  
Priority = 10
  
Write Bootstrap = "/var/lib/bacula/%c.bsr"
}

# Servidor Samba: Debian 8
Job {
  
Name = "BackupSamba"
  
JobDefs = "DefaultJob"
  
Client = debiansamba-fd
}

Client {
  
Name = debiansamba-fd
  
Address = 172.16.0.253
  
Password = "1a27_xc0RLsKRpp_21ubNVt93Luw-YGPZ"    
  
@/etc/bacula/basic-client.conf                               # Importar informaçoes do arquivo
}



- Eu entendi sobre como mudar os nomes dos volumes, é a forma que definimos no pool que deve ser colocada também no Schedule.
Você coloca a Pool no schedule para salvar os backups corretos nas devidas Pools, pois um Job vai estar em mais de uma Pool geralmente.

- Entendi essa parte mais ou menos, mas creio que ao me deparar com um cenário assim, irei entender. 

Na verdade no começo é um pouco complicado, pois o Bacula permite inúmeras configurações, mas depois que você entende sua lógica é mamão com açúcar heheheh 

- Sim é complicado mesmo, são muitos detalhes e informações, mas você já me deu um bom feedback de que estou entendendo e indo pelo caminho correto.

Obrigado.
Obs: coloquei em azul, porque não estou familiarizado com a forma que são dadas as respostas no grupo, assim fica mais fácil eu saber quando você responde.
________________________________________________________________________

Renato Chaves

unread,
Feb 16, 2017, 1:04:47 PM2/16/17
to Bacula Backup-Pt-Br
Olá Pedro, segue abaixo mais ou menos uma definição do JobDefs e do Pool:

  • O JobDefs é uma classe de job padrão que pode ser utilizado por diversos job’s. Quando no Job de backup não tem especificado todos os parâmetros, ele utilizará os parâmentros padrões que estão configurados no JobDefs.

  • O Pool é o local de definição de retenção dos backup. Quando um job é submetido ele é submetido para um Pool. É dentro de um Pool que se configura o comportamento do volume. No backup em disco, é possível limitar o tamanho do volume. No backup em disco o ideal é que tenha vários volumes. No Pool é possível configurar para que o label seja criado automaticamente.

No link abaixo, apesar de ser uma versão mais antiga, dá para se ter uma noção dos parâmetros usados no bacula:

http://tutoriaisgnulinux.com/?p=13575


Att,

Pedro Henrique

unread,
Feb 16, 2017, 1:57:00 PM2/16/17
to Bacula Backup-Pt-Br
Olá Renato, você leu tudo?.. eu ao menos entendi certo? ou não entendi nada kkkk?
Estou aprendendo, então obrigado pelos esclarecimentos e paciência, tanto a você quando ao Wanderlei.

Wanderlei Huttel

unread,
Feb 16, 2017, 7:43:09 PM2/16/17
to bacula-ba...@googlegroups.com

Atenciosamente 

Wanderlei Hüttel

Em 16 de fevereiro de 2017 15:46, Pedro Henrique <phrd...@gmail.com> escreveu:
- Não entendi muito bem como funciona os pools, realmente até procurei algo na internet para entender melhor, mas não entendi 100%.
  •  O pool é responsável pela forma que é feita o backup?
A pool é um conjunto de volumes, geralmente serve para separar tipos de backup e/ou retenções diferentes. 
Eu costumo usar 3 Pools (Diaria - 30 dias retenção, Semanal - 30 dias de retenção e Mensal e 12 meses de retenção)

- Então eu entendi corretamente como funciona as Pools, agora que você deu essa luz. Cada Pool, com essa necessidade, trabalharia em um job especifico.
Imagine um Job de um servidor de arquivos (apenas um único Job) onde você pode fazer backups Diários, Semanais e Mensais por exemplo. 
Schedule {
  Name = "Agenda_GFS_Noite"
  Run = Level=Incremental   Pool=Diaria    on Monday-Thursday at 23:30
  Run = Level=Differential    Pool=Semanal   on 2nd-6th Friday  at 23:30
  Run = Level=Full              Pool=Mensal    on 1st Friday      at 23:30
}
Com base no Schedule acima o backup desse servidor de arquivos vai ser executado conforme o schedule e vai salvar os dados (no volume físico) nas Pool determinadas no Schedule, então ao longo de 1 mês você vai possuir o mesmo Job nas 3 pools, cada uma com o seu "Level" do backup (Full, Incremental ou Diferencial). 
 


Até existe essa possibilidade, mas não é necessário. O ideal é você analisar o seu ambiente e e verificar o espaço que você tem para fazer o backup e talvez separar em Pools Diarias, Semanal e Mensal, que seria o esquema GFS (Grandfather, Father and Son)

- Não entendi muito bem, mas estou trabalhando para entender melhor esse esquema de agendamento GFS. Trabalho em uma faculdade. Colocarei os servidores para fazer um backup Full a cada três meses, Incremental diariamente e  todo final de semana. Ainda estou estudando melhor isso.
O exemplo que expliquei acima pode clarear o entendimento. 
 
Seria também um JobDefs { } para cada pool?
O JobDefs é uma espécie de modelo de job para não precisar ficar digitando todas as opções necessárias. 

- Eu verifiquei agora nos arquivos, é um modelo, realmente.
OK 
 
No caso todos os Jobs vão possuir as informações contidas no JobDefs e mais o que está definido no próprio Job.
Quando você configura alguma opção no Job esse sobrescreve a opção que está no JobDefs (o Job tem precedência sobre o JobDefs) e a Pool do Schedule também tem precedência sobre o JobDefs e Job.

- Ainda não assimilei muito bem, mas estou começando a entender,  eu teria que criar uma JobDefs (que são as definições do job, forma que irá trabalhar, Pool que irá usar, Schedule, nível de backup, etc..), e, em cada job, colocar qual JobDefs ele vai usar., Abaixo tenho um exemplo de configuração de JobDefs. Lá em Job, no campo JobDef =, eu seleciono o "modelo de JobDefs" que irei usar para aquele Job.
Isso mesmo



JobDefs {
 
Name = "DefaultJob"
 
Type = Backup
 
Level = Incremental
 
Client = bkpserver-fd
 
FileSet = "Full Set"
 
Schedule = "WeeklyCycle"
 
Storage = File
 
Messages = Standard
 
Pool = File
 
SpoolAttributes = yes
 
Priority = 10
 
Write Bootstrap = "/var/lib/bacula/%c.bsr"
}

# Servidor Samba: Debian 8
Job {
 
Name = "BackupSamba"
 
JobDefs = "DefaultJob"
 
Client = debiansamba-fd
}

Client {
 
Name = debiansamba-fd
 
Address = 172.16.0.253
 
Password = "1a27_xc0RLsKRpp_21ubNVt93Luw-YGPZ"    
 
@/etc/bacula/basic-client.conf                               # Importar informaçoes do arquivo
}



- Eu entendi sobre como mudar os nomes dos volumes, é a forma que definimos no pool que deve ser colocada também no Schedule.
Você coloca a Pool no schedule para salvar os backups corretos nas devidas Pools, pois um Job vai estar em mais de uma Pool geralmente.

- Entendi essa parte mais ou menos, mas creio que ao me deparar com um cenário assim, irei entender. 
OK 

Na verdade no começo é um pouco complicado, pois o Bacula permite inúmeras configurações, mas depois que você entende sua lógica é mamão com açúcar heheheh 

- Sim é complicado mesmo, são muitos detalhes e informações, mas você já me deu um bom feedback de que estou entendendo e indo pelo caminho correto.

Obrigado.
Obs: coloquei em azul, porque não estou familiarizado com a forma que são dadas as respostas no grupo, assim fica mais fácil eu saber quando você responde.
Blz. Sem problemas 
________________________________________________________________________

--
Você recebeu essa mensagem porque está inscrito no grupo "Bacula Backup-Pt-Br" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para bacula-backup-pt-br+unsub...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para bacula-backup-pt-br@googlegroups.com.

Pedro Henrique

unread,
Feb 16, 2017, 11:14:12 PM2/16/17
to Bacula Backup-Pt-Br
Imagine um Job de um servidor de arquivos (apenas um único Job) onde você pode fazer backups Diários, Semanais e Mensais por exemplo. 
Schedule {
  Name = "Agenda_GFS_Noite"
  Run = Level=Incremental   Pool=Diaria    on Monday-Thursday at 23:30
  Run = Level=Differential    Pool=Semanal   on 2nd-6th Friday  at 23:30
  Run = Level=Full              Pool=Mensal    on 1st Friday      at 23:30
}
Com base no Schedule acima o backup desse servidor de arquivos vai ser executado conforme o schedule e vai salvar os dados (no volume físico) nas Pool determinadas no Schedule, então ao longo de 1 mês você vai possuir o mesmo Job nas 3 pools, cada uma com o seu "Level" do backup (Full, Incremental ou Diferencial). 
 
- Agora eu entendi =)

Quando você configura alguma opção no Job esse sobrescreve a opção que está no JobDefs (o Job tem precedência sobre o JobDefs) e a Pool do Schedule também tem precedência sobre o JobDefs e Job.

- Isso também me esclarece muitas coisas.

Muito obrigado a todos por toda paciência e o compartilhamento de conhecimento, acho que agora já deu uma bela clareada, vou continuar estudando.

Wanderlei Hüttel Muito obrigado.
Para postar nesse grupo, envie um e-mail para bacula-ba...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages