erro “grep: memory exhausted” na partição grande

2

Eu estava editando um arquivo de texto com minhas anotações sobre comandos do linux quando notei que um grande pedaço dele estava faltando (copie sem colar, provavelmente). O problema é que eu já salvei o documento. (E este é um editor simples, então não há cópias ocultas)

Agora eu encontrei várias postagens de blog ( esta especificamente , por exemplo), que mostram como você pode procurar facilmente por uma seção por strings de texto usando o grep:

$ sudo grep -a -C100 'sudo lshw -c' /dev/sdb2 > file.txt

Mas eu recebo isso depois de um tempo:

grep: memory exhausted

Eu entendo de esta resposta que é sobre grep linhas de leitura maiores que a memória, então eu acho Eu preciso de código semelhante, mas sem find .

É uma partição NTFS de 2 TB em um disco rígido de 3 TB.

    
por plokijuh 13.06.2015 / 05:31

1 resposta

1

O programa grep lê uma linha de cada vez na memória. Uma linha é definida como tudo depois de um caractere de nova linha e até o próximo. Com dados binários, pode haver um espaço muito grande sem nenhuma nova linha.

Você pode tentar usar grep -z . Isso informa ao grep para tratar os bytes nulos como o separador de registro de entrada em vez de novas linhas. Pedaços extremamente grandes de dados binários são menos propensos a conter nenhum byte nulo do que sem nova linha. Na prática, o maior número possível de dados sem nova linha é uma longa seqüência de bytes nulos em uma área do disco que nunca foi gravada. Grandes quantidades de dados de texto que não contêm bytes nulos provavelmente não serão tão grandes a ponto de esgotar a memória. Outro benefício de grep -z é que a saída conterá blocos inteiros (tipicamente 1–4kB) de texto, não apenas uma linha.

Em vez de grep, você pode tentar um utilitário dedicado, como PhotoRec (parte de TestDisk ). Apesar do nome, não se limita a fotos. Esses utilitários conhecem a estrutura do sistema de arquivos, portanto, eles podem recuperar um arquivo excluído que abrange vários blocos não consecutivos.

É claro que nunca há garantia de que você poderá recuperar dados antigos. Pode ter sido substituído.

    
por 14.06.2015 / 20:00