Como eu gero um regex para restaurar uma pasta específica para “btrfs restore”?

1

Eu estou tentando recuperar arquivos após um travamento de um sistema de arquivos btrfs usando:

btrfs restore --path-regex 'regex' -sv -D /dev/sdXX /mnt/destination

por exemplo, para recuperar todos os arquivos em /snapshots/@_2018-06-01T23:29:33-04:00.preupgrade/ , tentei seguir o link e obtive (entre muitas outras tentativas ):

^/(|/snapshots(|/\@\_2018\-06\-01T23\:29\:33\-04\:00\.preupgrade(|/.*)))$

Não foi possível selecionar nenhum arquivo. Eu tentei 5 horas de coisas. Eu estou perdido.

O que estou fazendo de errado? Como posso fazer isso funcionar?

Ele precisa ser seletivo por vários motivos. Principalmente porque falha no meio e eu preciso criar scripts para tentativas seletivas de recuperar arquivos viáveis além das falhas.

    
por rick 30.08.2018 / 07:18

1 resposta

0

Ok. Eu poderia ter descoberto isso. Consegui para trabalhar de qualquer maneira. Os dois pontos e traços não eram escapáveis e estes não são regex normal. Para os dois-pontos e traços, eu consegui simplesmente combinar "."

Seguindo as instruções da página do manual, abaixo, para maior clareza, recebi o seguinte:

# restore specific path:
# "@_2018-08-17_08.18.30.preupgrade"
btrfs restore --path-regex   \
'^/(|snapshots(|/@\_2018.*08.17.*preupgrade(|/.*)))$'  \
-s  -o  /dev/sda5 /media/outputdir/

Isso ainda deixa a questão do que está acontecendo com o formato regex?

da página man:        --path-regex            restaurar apenas nomes de arquivos que correspondam a uma expressão regular (regex (7))            com um formato obrigatório

       ^/(|home(|/username(|/Desktop(|/.*))))$

O formato não é muito confortável e restaura todos os arquivos no    diretórios em todo o caminho, então isso não é útil para restaurar    arquivo único em uma hierarquia profunda.

    
por 01.09.2018 / 21:41