como é a entrada de um “arquivo excluído” no diário

7

Espero que tenha acertado: um arquivo inode contém dados como número do inode, hora da última modificação, propriedade etc. - e também a entrada: » tempo de exclusão «. O que me deixou curioso:
Excluir um arquivo significa remover o inode number , marcando assim o espaço de armazenamento vinculado a ele como disponível. Existem ferramentas para recuperar (acidentalmente) arquivos excluídos (por exemplo, de um diário, se disponível). E eu sei o comando stat .

Pergunta

Como é a aparência de uma entrada "arquivo excluído" no diário?

Meu palpite é uma saída aparentemente nada espetacular, como se fosse emitido o comando stat .

Eu sei que excluir um arquivo e tentar recuperá-lo seria uma experiência de primeira mão, mas não estou em um ponto em que poderia fazer isso sem ajuda externa e quero entender exatamente o que estou fazendo . Entrar na ressurreição de dados seria um desvio para mim no momento, enquanto eu tento dar um aperto firme nas coisas básicas ... Eu não sou preguiçoso, isso não é lição de casa, isso é para estudo privado.

    
por erch 10.12.2013 / 00:50

2 respostas

6

Quando um arquivo ou diretório é "excluído", seu número de inode é removido do diretório que contém o arquivo. Você pode ver a lista de inodes que um determinado diretório contém usando o comando tree .

Exemplo

$ tree -a -L 1 --inodes .
.
|-- [9571121]  dir1
|-- [9571204]  dir2
|-- [9571205]  dir3
|-- [9571206]  dir4
|-- [9571208]  dir5
|-- [9571090]  file1
|-- [9571091]  file2
|-- [9571092]  file3
|-- [9571093]  file4
'-- [9571120]  file5

5 directories, 5 files

Links

É importante entender como os hardlinks funcionam. Este tutorial intitulado: Intro to Inodes tem excelentes detalhes se você está apenas começando a tentar para obter uma compreensão fundamental de como os inodes funcionam.

trecho

Inode numbers are unique, but you may have noticed that some file name and inode number listings do show some files with the same number. The duplication is caused by hard links. Hard links are made when a file is copied in multiple directories. The same file exists in various directories on the same storage unit. The directory listing shows two files with the same number which links them to the same physical on te storage unit. Hard links allow for the same file to "exist" in multiple directories, but only one physical file exists. Space is then saved on the storage unit. For example, if a one megabyte file is placed in two different directories, the space used on the storage is one megabyte, not two megabytes.

Excluindo

Esse mesmo tutorial também teve isso a dizer sobre o que acontece quando um inode é excluído.

Deleting files causes the size and direct/indirect block entries are zeroed and the physical space on the storage unit is set as unused. To undelete the file, the metadata is restored from the Journal if it is used (see the Journal article). Once the metadata is restored, the file is once again accessible unless the physical data has been overwritten on the storage unit.

Extensões

Você pode querer também retocar extensões e como elas funcionam. Novamente a partir do site linux.org, outro bom tutorial, intitulado: Extents irá ajudá-lo a obter os princípios básicos.

Você pode usar o comando filefrag para identificar quantas extensões um determinado arquivo / diretório está usando.

Exemplos

$ filefrag dir1
dir1: 1 extent found

$ filefrag ~/VirtualBox\ VMs/CentOS6.3/CentOS6.3.vdi 
/home/saml/VirtualBox VMs/CentOS6.3/CentOS6.3.vdi: 5 extents found

Você pode obter resultados mais detalhados usando a opção -v :

$ filefrag -v dir1
Filesystem type is: ef53
File size of dir1 is 4096 (1 block of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..       0:   38282243..  38282243:      1:             eof
dir1: 1 extent found

OBSERVAÇÃO: Observe que um diretório sempre consome no mínimo 4K bytes.

Dando um arquivo de tamanho

Podemos pegar um dos nossos arquivos de exemplo e gravar 1MB de dados assim:

$ dd if=/dev/zero of=file1 bs=1k count=1k
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.00628147 s, 167 MB/s

$ ll | grep file1
-rw-rw-r--. 1 saml saml 1048576 Dec  9 20:03 file1

Se analisarmos esse arquivo usando filefrag :

$ filefrag -v file1
Filesystem type is: ef53
File size of file1 is 1048576 (256 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..     255:   35033088..  35033343:    256:             eof
file1: 1 extent found

Excluindo e recriando um arquivo rapidamente

Uma experiência interessante que você pode fazer é criar um arquivo, como file1 acima, excluí-lo e recriá-lo. Veja o que acontece. Logo após excluir o arquivo, eu executo novamente o comando dd ... e o file1 aparece assim no comando filefrag :

$ filefrag -v file1
Filesystem type is: ef53
File size of file1 is 1048576 (256 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..     255:          0..       255:    256:             unknown,delalloc,eof
file1: 1 extent found

Após um pouco de tempo (segundos a minutos passam):

$ filefrag -v file1
Filesystem type is: ef53
File size of file1 is 1048576 (256 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..     255:   38340864..  38341119:    256:             eof
file1: 1 extent found

O arquivo finalmente aparece. Eu não tenho certeza do que está acontecendo aqui, mas parece que leva algum tempo para o estado do arquivo se estabelecer entre o periódico & O disco. A execução dos comandos stat mostra o arquivo com um inode, portanto, ele está lá, mas os dados que filefrag usa não foram resolvidos, portanto estamos em um estado de limbo.

    
por 10.12.2013 / 01:57
0

A exclusão de um arquivo envolve algumas etapas:

  1. Marque o nome no diretório como excluído
  2. Diminuir a contagem de links no inode
  3. Se a contagem de links agora for zero, defina o tempo excluído e
  4. Marque os blocos de dados como livres no bitmap

Assim, o diário "parece com" esta sequência.

    
por 11.12.2013 / 16:15