Bermain dengan e2fsprogs debugfs
, dengan perubahan / kecelakaan, file bernama filen/ame
dibuat. Jelas karakter garis miring maju /
berfungsi sebagai karakter pemisah khusus dalam nama jalur.
Masih menggunakan debugfs
saya ingin menghapus file bernama filen/ame
, tapi saya sedikit berhasil, karena /
karakter tidak ditafsirkan sebagai bagian dari nama file?
Apakah debugfs menyediakan cara untuk menghapus file ini yang berisi slash? Kalau begitu bagaimana?
Saya menggunakan:
cd /tmp
echo "content" > contentfile
dd if=/dev/zero of=/tmp/ext4fs bs=1M count=50
mkfs.ext4 /tmp/ext4fs
debugfs -w -R "write /tmp/contentfile filen/ame" /tmp/ext4fs
debugfs -w -R "ls" /tmp/ext4fs
yang keluaran:
debugfs 1.43.4 (31-Jan-2017)
2 (12) . 2 (12) .. 11 (20) lost+found 12 (980) filen/ame
Saya mencoba yang berikut ini untuk menghapus filen/ame
file:
debugfs -w -R "rm filen/ame" /tmp/ext4fs
tetapi ini tidak berhasil dan hanya menghasilkan:
debugfs 1.43.4 (31-Jan-2017)
rm: File not found by ext2_lookup while trying to resolve filename
Selain mengubah konten node direktori secara manual, apakah ada cara untuk menghapus file menggunakan debugfs
?
filen\/ame
) tidak berfungsi?Jawaban:
Jika Anda ingin memperbaiki dan tidak hanya mencoba
debugfs
, Anda dapat meminta fsck melakukan pekerjaan untuk Anda. Tandai sistem file sebagai kotor dan jalankanfsck -y
untuk mengubah nama file:sumber
e2fsck
memiliki-f
opsi orce yang akan mengarah ke pemeriksaan penuh "bahkan jika sistem file tampak bersih".Selamat atas kerja fsck; jika karena alasan tertentu tidak berhasil jawabannya
ls -i1
diikuti olehumount
dan kemudianclri
.Ref: http://docstore.mik.ua/orelly/unix/upt/ch23_13.htm
Saya sebenarnya telah menguji metode ini.
sumber
clri
ini bukan perintah yang terpisah (seperti pada beberapa sistem Unix lainnya), ini adalah perintah di dalamdebugfs
.Entry 'filen/ame' in / (2) has deleted/unused inode 12. Clear<y>?
alih-alih yang tertulis di jawaban lain - tetapi melakukan clri adalah langkah ekstra. Sepertinya tidak ada cara untuk menyelesaikan ini murni dari dalam debugfs.Jika Anda memindahkan file ke direktori, Anda kemudian dapat menghapus direktori dengan file di dalamnya.
sumber
/
di dalamnya.