Quando eu inicializo no modo de usuário único e listo os snapshots do ZFS nos quais estou interessado, quero reverter para o snapshot "xfcedesktop". No entanto, isso requer que eu digite manualmente o comando zfs rollback snapshotname@xfcedesktop
para cada snapshot, assim:
# zfs list -t snapshot -o name | grep xfcedesktop
zroot@xfcedesktop
zroot/ROOT@xfcedesktop
zroot/ROOT/default@xfcedesktop
zroot/home@xfcedesktop
zroot/home/zoliky@xfcedesktop
zroot/tmp@xfcedesktop
zroot/usr@xfcedesktop
zroot/usr/ports@xfcedesktop
zroot/usr/src@xfcedesktop
zroot/var@xfcedesktop
zroot/var/audit@xfcedesktop
zroot/var/crash@xfcedesktop
zroot/var/log@xfcedesktop
zroot/var/mail@xfcedesktop
zroot/var/tmp@xfcedesktop
# now I need to type this for each line:
zfs rollback zroot@xfcedesktop
zfs rollback zroot/ROOT@xfcedesktop
zfs rollback zroot/ROOT/default@xfcedesktop
.. and so on
Isso consome tempo e é propenso a erros. Estou pensando se há um truque de shell ou um one-liner que me deixaria fazer um loop pela saída do grep e executar os comandos de rollback para cada snapshot. Estou usando sh (não bash) no FreeBSD, executando no modo de usuário único. Idealmente, eu gostaria que fosse um one-liner em vez de um script.
Use um
while
loop simples, como em... ou usar
xargs
A
-r
opção paraxargs
é suportada, mas desnecessária no FreeBSD. Com oxargs
, a opção impede que o utilitário tente executar o utilitário se a entrada estiver vazia. Este é o comportamento padrão doxargs
.Também tenho sido mais cuidadoso com a expressão regular usada com
grep
para garantir que obteremos apenas os instantâneos esperados (aqueles que terminam exatamente em@xfcedesktop
).Isso não é copiar e colar - remover
##
para o fim da linha. Estou usando##
comentários para explicar.Remova o
echo
comando quando estiver satisfeito com o resultado.Ambas as soluções têm aspectos positivos. E eu geralmente uso um
awk
comando muito simples ao agrupar vários sistemas de arquivos ZFS ou snapshots.Combinando o uso sábio de
-Ho name
junto com a abordagem "olhe antes de pular" deecho
comandos antes de executá-los, sugiro:Se você gostar dos comandos que vê, use a seta para cima até o comando e adicione
| sh
para executázfs rollback
-los.