Ini adalah pertama kalinya saya melihat pencarian menggunakan inode. Kapan Anda perlu mencari dengan inode?
Coren
@Coren - ini biasa digunakan jika Anda memiliki file dengan, katakanlah, "-" di depan. Anda dapat melakukan ls -li untuk menemukan inode-nya, lalu: find. -inum <inode> -exec rm -i {} \; Ini adalah pendekatan sabuk-dan-pengikat untuk memastikan Anda dapat menghapus file. Tentu saja, Anda juga bisa 'rm - -filename', atau rm ./-filename, atau rm "-filename".
swisscheese
2
@ Koren dengan selinux, pesan log menyertakan inode, tetapi bukan path lengkap. Jadi, Anda harus mencari inode untuk menemukan file yang dirujuk. (toh itu use case saya)
Patrick
1
@Coren Misalnya ketika file memiliki banyak tautan keras, Anda telah melihat bahwa kontennya sudah usang dan ingin menghapus file tersebut, tetapi Anda hanya menemukan salah satu nama file dan ingin menghapus yang lain.
Gilles 'SANGAT berhenti menjadi jahat'
2
Gunakan saja find / -inum <inode>. Ini jauh lebih portabel daripada debugfsdan juga bekerja jauh lebih andal (itu dapat menemukan jalur yang bukan milik file pada hard drive, seperti perangkat, misalnya).
7heo.tk
Jawaban:
33
Untuk sistem file ext4, Anda dapat menggunakan debugfsseperti pada contoh berikut:
Saya mungkin harus menentukan tipe sistem file. Tidak terpikir oleh saya bahwa metode melakukan hal-hal ini akan berbeda untuk sistem file yang berbeda. Saya menggunakan XFS, jadi walaupun saya yakin jawaban Anda benar, itu tidak akan membantu saya secara khusus.
inode-resolve [-v] <ino> <path>
(needs root privileges)
resolve paths to all files with given inode number ino in a given
subvolume at path, ie. all hardlinks
Options
-v
verbose mode, print count of returned paths and ioctl()
return value
Anda dapat melihat perintah fsdb, ditemukan di sebagian besar Unices, dan tersedia di suatu tempat untuk Linux saya yakin. Ini adalah perintah yang kuat yang memungkinkan Anda untuk mengakses struktur inode in-core file, jadi berhati-hatilah. Sintaksnya juga sangat singkat.
Sementara fsdb tidak akan benar-benar membiarkan Anda menemukan nama file dari inode, itu tidak memungkinkan Anda untuk langsung mengakses inode ketika Anda tentukan itu, pada dasarnya "port" Anda ke file itu sendiri (atau setidaknya itu blok data pointer) sehingga lebih cepat dalam hal itu daripada menemukan ;-).
Pertanyaan Anda tidak menentukan apa yang ingin Anda lakukan dengan file tersebut. Apakah Anda mungkin memecahkan kode file NFS?
Yah, saya tidak berpikir apa yang akan saya lakukan dengan informasi itu relevan dengan pertanyaan saya, jadi saya meninggalkannya. Dalam kasus saya, itu hanyalah pertanyaan rasa ingin tahu; defragmentasi xfs_fsr saya memuntahkan defragments inode mana, dan satu sangat terfragmentasi (lebih dari 5000 extents) dan saya hanya ingin tahu file mana itu. findbekerja, itu sangat lambat.
Alex
Saya mencoba untuk memperbaiki masalah ketika rhel vm saya melakukan fsck (20 menit!) Penuh setiap boot dan yang harus saya jalani adalah nomor inode yang dilaporkan di / var / opt / messages salah. (Karena itu, cari -inum tidak benar-benar menemukannya)
find / -inum <inode>
. Ini jauh lebih portabel daripadadebugfs
dan juga bekerja jauh lebih andal (itu dapat menemukan jalur yang bukan milik file pada hard drive, seperti perangkat, misalnya).Jawaban:
Untuk sistem file ext4, Anda dapat menggunakan
debugfs
seperti pada contoh berikut:Jawabannya tidak langsung, tetapi tampaknya lebih baik daripada
find
.Output yang diperoleh dapat dengan mudah diurai untuk mendapatkan nama file.
sumber
btrfs
man btrfs-inspect-internal
mengatakan:Contoh:
sudo btrfs inspect-internal inode-resolve 15380 /home
sumber
Anda dapat melihat perintah fsdb, ditemukan di sebagian besar Unices, dan tersedia di suatu tempat untuk Linux saya yakin. Ini adalah perintah yang kuat yang memungkinkan Anda untuk mengakses struktur inode in-core file, jadi berhati-hatilah. Sintaksnya juga sangat singkat.
fsdb untuk AIX
fsdb tautan ulang file di Solaris
Sementara fsdb tidak akan benar-benar membiarkan Anda menemukan nama file dari inode, itu tidak memungkinkan Anda untuk langsung mengakses inode ketika Anda tentukan itu, pada dasarnya "port" Anda ke file itu sendiri (atau setidaknya itu blok data pointer) sehingga lebih cepat dalam hal itu daripada menemukan ;-).
Pertanyaan Anda tidak menentukan apa yang ingin Anda lakukan dengan file tersebut. Apakah Anda mungkin memecahkan kode file NFS?
sc.
sumber
find
bekerja, itu sangat lambat.