e2fsprogs 사용시 debugfs
변경/사고로 인해 filen/ame
이라는 파일이 생성되었습니다. 분명히 슬래시 문자는 /
경로 이름에서 특수 구분 기호 역할을 합니다.
계속 사용하고 있습니다 debugfs
. 이름이 지정된 파일을 삭제하고 싶지만 문자가 파일 이름의 일부로 해석되지 않기 filen/ame
때문에 거의 성공하지 못합니다 ./
debugfs는 슬래시가 포함된 파일을 삭제하는 방법을 제공합니까? 그렇다면 어떨까요?
나는 다음을 사용했다:
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
출력:
debugfs 1.43.4 (31-Jan-2017)
2 (12) . 2 (12) .. 11 (20) lost+found 12 (980) filen/ame
파일 을 삭제하기 위해 다음을 시도했습니다 filen/ame
.
debugfs -w -R "rm filen/ame" /tmp/ext4fs
그러나 이것은 작동하지 않았고 단지 다음과 같이 생성되었습니다.
debugfs 1.43.4 (31-Jan-2017)
rm: File not found by ext2_lookup while trying to resolve filename
디렉토리 노드의 내용을 수동으로 변경하는 것 외에 파일 삭제를 사용할 수 있는 방법이 있습니까 debugfs
?
답변1
문제를 해결하고 싶지만 시도만 하지 않는다면 다음을 debugfs
수행할 수 있습니다.FSCK당신을 위해 일을 하고 있습니다. 파일 시스템을 더티로 표시하고 실행하여 fsck -y
파일 이름을 변경합니다.
$ debugfs -w -R "dirty" /tmp/ext4fs
$ fsck -y /tmp/ext4fs
...
/tmp/ext4fs was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Entry 'filen/ame' in / (2) has illegal characters in its name.
Fix? yes
...
$ debugfs -w -R "ls" /tmp/ext4fs
2 (12) . 2 (12) .. 11 (20) lost+found 12 (980) filen.ame
답변2
fsck 작업을 축하 합니다 . 어떤 이유로 작동하지 않으면 대답은 ls -i1
다음과 같습니다 .umount
clri
인용하다:http://docstore.mik.ua/orelly/unix/upt/ch23_13.htm
실제로 이 방법을 테스트해봤습니다.
답변3
파일을 디렉터리로 이동하면 파일이 포함된 디렉터리를 삭제할 수 있습니다.
mkdir foo
mv filen* foo
rm -rf foo