며칠 전 NTFS 이동식 하드 드라이브에 일부 Linux 파일을 백업했는데 이번에는 해당 파일을 삭제해야 했습니다. 하지만 저는 다음과 같은 이유로 이것이 어렵다고 생각합니다.
Windows에서는 "제품을 찾을 수 없습니다"
OS ubuntu 12.04가 설치된 가상 머신에서 하드 드라이브를 마운트하고("ntfs-3g"를 사용하는 것 같습니다) ""를 사용하면
rm
"불만"이 발생합니다.해당 파일이나 디렉터리가 없습니다."; "ls
"도 파일을 가져올 수 없습니다.
그렇다면 이 파일을 제대로 파쇄할 수 있는 방법이 없을까요?
답변1
달리기chkdsk /f
Windows에서. 잘못된 문자가 포함된 파일을 삭제하거나 수동으로 삭제할 수 있도록 파일 이름을 수정해야 합니다.
답변2
NTFS는 일반적인 UNIX 파일 시스템과는 달리 HFS+ "포크"와 같은 "스트림"을 지원합니다.
Windows의 규칙은 파일 이름과 스트림 이름을 구분하여 파일 이름의 일부로 스트림 이름을 지정하는 것입니다 :
. 이것이 바로 "이 항목을 찾을 수 없습니다."라는 메시지가 표시되는 이유입니다. "Here: try this"라는 이름의 경우 Windows는 다음과 같습니다. "here" 파일에서 "try this" 스트림을 찾으세요. Windows에서 이와 같은 파일 이름을 구문 분석하지 않도록 지시할 수는 있겠지만 방법은 모르겠습니다.
ntfs-3g에는 호환 가능한 스트림 이름 확인을 활성화하는 마운트 옵션이 있으며, fs를 마운트할 때 -o streams_interface=windows
ntfs-3g는 :
동일한 방식으로 파일 이름을 처리합니다. 따라서 이를 확인하려면 mount|grep windows
충분히 잘 작동해야 합니다.
답변3
이전에 콜론이 포함된 ntfs-3g 파일 시스템에서 Windows chkdsk를 실행하려고 시도했지만 시스템이 Linux에서 또는 windows_names
옵션 없이 설치되어 사용된 streams_interface=windows
경우 NTFS 파일 시스템의 무결성을 복원하는 유일한 방법은 다음을 부팅하는 것입니다. Windows 운영 체제에서는 Windows가 chkdsk
콜론을 포함하는 모든 파일을 영구적으로 삭제하도록 허용합니다.
다른 말로 하면: 그렇습니다아주 아주 조심스러워chkdsk
Linux에서 ntfs-3g를 사용하여 작성된 NTFS 파일 시스템에서 Windows를 실행합니다.콜론이 포함된 파일은 모두 손실됩니다.
ntfs-3g 상호 작용을 사용하면 두 가지 결과가 발생합니다.
Tuxera는 NTFS 알파벳 사양을 따르며 파일 이름에 콜론 사용을 허용합니다. 그러나 Windows와 특히 호환되지 않고 Windows에서 사용할 의도가 전혀 없는 NTFS 파일 시스템을 사용하는 사람은 거의 없으므로 거의 모든 사람이 실제로 기본이 아닌 동작이 필요합니다.
손상된 NTFS 파일 시스템을 복구하기 위해 Tuxera에서 권장하는 안전한 방법은 Windows 운영 체제를 부팅한 다음
chkdsk
. (이는 Windows 운영 체제를 부팅하고 파일 시스템을 복구해야 함을 감지하는 경우에도 자동으로 발생합니다.)
따라서 파일 시스템의 장기적인 안정성과 보안에 관심이 있다면 결국에는 Windows 운영 체제를 가동하여 chkdsk
복구해야 합니다. 그러나 Windows가 chkdsk
실행되면 파일 이름에 콜론이 포함된 모든 파일이 삭제됩니다.프롬프트나 경고가 없습니다.
불행하게도 많은 사람들이 NTFS를 이식성과 백업을 위한 범용 파일 시스템으로 사용합니다. 파일 이름이 포함된 Linux의 두 가지 일반적인 파일은 제목 줄(Re:, Fwd: 등)을 기준으로 이름이 지정된 이메일과 Maildir 형식을 사용하여 저장된 이메일입니다. 따라서 이 목적을 위해 처음부터 ntfs-3g 파일 시스템을 생성하는 경우 항상 windows_names
mount 옵션과 mount 를 사용해야 합니다. 파일 시스템에서 생성된 모든 파일은 /etc/fstab
최종적으로 실행해야 할 때 유효해야 합니다.chkdsk
이렇게 하지 않으면 Windows의 잘못된 파일(콜론 등이 포함된 파일)의 대부분 또는 전부를 삭제하거나 복구하지 못할 수도 있습니다. 잘못된 파일이 생성되면 Windows는 파일이 지워질 때까지 파일 시스템이 손상된 것으로 간주하며 Windows에서만 파일 시스템을 복구할 수 있습니다. 따라서 Linux에서는 파일을 복구하거나 삭제할 수 없습니다.
답변4
이것이 왜 문제를 일으키는지 이해가 되지 않습니다. 다음 테스트는 NTFS 파일 시스템에서 실행됩니다.
$ mount| grep win
/dev/sda3 on /winblows type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,blksize=4096)
$ grep winb /etc/fstab
UUID=C0BCD19CBCD18D72 /winblows ntfs defaults 0 0
$ pwd
/winblows/foo
따라서 NTFS 파티션에서는 다음을 실행합니다.
$ touch :a a: a:b
$ ls
:a a: a:b
$ rm :a a: a:b
어쨌든 이러한 명령은 모두 작동하며 가능한 해결 방법은 다음과 같습니다.
rm \:a
rm -- :a
rm ':a'
rm *:*
find . -name "*:*" -delete