ZFS: Excluindo Vários Snapshots de uma Só Vez

já temos uma série de artigos falando sobre o sistema de arquivos zfs. Clique aqui para ver.

Hoje iremos ver uma dica de como remover diversos snapshots ao mesmo tempo.

Para isso apresento duas alternativas.

  • Usando o caractere da porcentagem “%”
  • Usando o comando xargs

 

Meus Snapshots

Antes de tudo vamos ver os snapshots que já tenho em meu sistema.

elder@server01:~$ sudo zfs list -t snapshot 
NAME                                           USED  AVAIL     REFER  MOUNTPOINT
meuPool@2021-07-13-113158                        0B      -       24K  -
meuPool@2021-07-13-123957                        0B      -       24K  -
meuPool@2021-07-13-141705                        0B      -       24K  -
meuPool@2021-07-13-144522                        0B      -       24K  -
meuPool/contratos@2021-07-13-123957             14K      -       24K  -
meuPool/contratos@2021-07-13-141705              0B      -     10.0M  -
meuPool/contratos@2021-07-13-144522              0B      -     10.0M  -
meuPool/contratos/internos@2021-07-13-123957     0B      -      600M  -
meuPool/contratos/internos@2021-07-13-141705     0B      -      600M  -
meuPool/contratos/internos@2021-07-13-144522     0B      -      600M  -
meuPool/listas@2021-07-13-123957                 0B      -     3.42G  -
meuPool/listas@2021-07-13-141705                 0B      -     3.42G  -
meuPool/listas@2021-07-13-144522                 0B      -     3.42G  -
meuPool/reservas@2021-07-13-123957               0B      -       24K  -
meuPool/reservas@2021-07-13-141705               0B      -       24K  -
meuPool/reservas@2021-07-13-144522               0B      -       24K  -

Esse é meu cenário atual.

Excluir Snapshots no zfs usando %

 

Irei excluir todos os snapshots na pasta meuPool/contratos/internos usando o caractere da porcentagem

elder@server01:~$ sudo zfs destroy meuPool/contratos/internos@%

Veja que coloquei o ca ractere %  ao final. Assim serão excluídos todos snapshots que começam com “meuPool/contratos/internos@”, ou seja, esses:

meuPool/contratos/internos@2021-07-13-123957
meuPool/contratos/internos@2021-07-13-141705
meuPool/contratos/internos@2021-07-13-144522

 

Excluindo Snapshots no zfs Usando xargs

 

Usamos o comando xargs através do pipe. O pipe é esse caractere:  |

O pipe funciona da seguinte forma, ele pega o resultado de um comando e passa para outro.

Aqui iremos usar o resultado do comando abaixo

zfs list -t snapshot -H -o name

Por que usamos “-H -o name”? Simplesmente porque queremos apenas o nome dos snapshosts(-o name) e sem o cabeçalho(-H).

Por exemplo, vamos executar o comando acima sem o “-H -o name”

elder@server01:~$ sudo zfs list -t snapshot 
NAME                                  USED  AVAIL     REFER  MOUNTPOINT
meuPool@2021-07-13-113158               0B      -       24K  -
meuPool@2021-07-13-123957               0B      -       24K  -
........
meuPool/reservas@2021-07-13-144522      0B      -       24K  -

Para remover o conteúdo em vermelho acima usamos “-H -o name”.

O -H remove o título acima e o “-o name” retorna apenas os nomes dos snapshots sem os dados na frente, nesse caso os

0B    –    24K.

Vejamos:

elder@server01:~$ sudo zfs list -t snapshot -H -o name
meuPool@2021-07-13-113158
meuPool@2021-07-13-123957
meuPool@2021-07-13-141705
meuPool@2021-07-13-144522
meuPool/contratos@2021-07-13-123957
meuPool/contratos@2021-07-13-141705
meuPool/contratos@2021-07-13-144522
meuPool/listas@2021-07-13-123957
meuPool/listas@2021-07-13-141705
meuPool/listas@2021-07-13-144522
meuPool/reservas@2021-07-13-123957
meuPool/reservas@2021-07-13-141705
meuPool/reservas@2021-07-13-144522

 

Obs.: Lembre-se, se não estiver logado como root, de usar sudo no início dos dois comandos, conforme exemplos abaixo.

Agora para excluir todos eles usamos

elder@server01:~$ sudo zfs list -t snapshot -H -o name  | sudo xargs -n1 zfs destroy

Se quisermos excluir apenas os  snapshots de um pool executamos

elder@server01:~$ sudo zfs list -t snapshot -H -o name meuPool  | sudo xargs -n1 zfs destroy

Se quisermos excluir os snapshots em meuPool/listas usamos

elder@server01:~$ sudo zfs list -t snapshot -H -o name meuPool/listas | xargs -n1 zfs destroy

 

 

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *