![debugfs의 ext4 파일 시스템에서 "filen/ame"(슬래시 포함)이라는 파일을 어떻게 삭제합니까?](https://linux55.com/image/107917/debugfs%EC%9D%98%20ext4%20%ED%8C%8C%EC%9D%BC%20%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90%EC%84%9C%20%22filen%2Fame%22(%EC%8A%AC%EB%9E%98%EC%8B%9C%20%ED%8F%AC%ED%95%A8)%EC%9D%B4%EB%9D%BC%EB%8A%94%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%82%AD%EC%A0%9C%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
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