[yan@machine ~]$ ls -di /run/media/yan/data
2 /run/media/yan/data
[yan@machine ~]$ lsblk -o NAME,FSTYPE,LABEL,TYPE,SIZE,MOUNTPOINT
NAME FSTYPE LABEL TYPE SIZE MOUNTPOINT
...
sdc disk 1.8T
├─sdc1 vfat clonezilla part 512M
├─sdc2 ext4 live_system part 14.7G
├─sdc3 ext4 system_images part 244.1G
├─sdc4 ext4 data part 781.3G /run/media/yan/data
└─sdc5 ext4 rec part 822.5G
[yan@machine data]$ df -i /run/media/yan/data/
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sdc4 51200000 74199 51125801 1% /run/media/yan/data
[yan@machine data]$ sudo find /run/media/yan/data | wc -l
23690
Então, parece que eu tenho muitos inodes desconectados, apesar do fsck me dizer que a partição está limpa (mesmo com -f). Eu gostaria de saber onde estão os inodes ausentes (74199-23690). Eu sei que ainda existem no disco porque consegui recuperar 50k usando o photorec.
Então eu tentei usar o debugfs, mas não consigo encontrar em nenhum lugar no manual uma maneira de despejar a lista de inodes alocados. (E a maioria das postagens online usam / ls -i para listar inodes, o que não funciona no meu caso).
Alguém sabe uma maneira de obter a lista de inodes usados de acordo com df / fsck?
Por enquanto, eu estou pensando em inutilmente bruteforce com algo ao longo das linhas de:
for i in 'seq 1 $NMAX'; do debugfs -R 'ncheck $i' | grep $i; done > inodelist
com NMAX grande o suficiente, mas certamente há uma maneira mais eficiente, não?
EDITAR:
Acho que encontrei um caminho possível. dumpe2fs
lista todos os blocos e inodes gratuitos para cada bloco. A partir dele, deve ser possível deduzir os inodes usados.
Eu ainda tenho que calcular a lista de "inodes não-livres" e ver se parece (pelo menos na contagem) ser o que eu quero. Da lista, encontrei alguns inodes estranhos aparentemente conectados entre si, mas não à raiz:
debugfs: pwd
[pwd] INODE: 45220182 PATH: .../dir1/dir2/dir3/dir4
[root] INODE: 2 PATH: /
debugfs: cd ..
debugfs: pwd
[pwd] INODE: 44957702 PATH: .../dir4/dir1/dir2/dir3
[root] INODE: 2 PATH: /