Windows에서는 USB 플래시 드라이브의 일부 파일을 볼 수 없지만 Linux에서는 볼 수 있는 이유는 무엇입니까?

Windows에서는 USB 플래시 드라이브의 일부 파일을 볼 수 없지만 Linux에서는 볼 수 있는 이유는 무엇입니까?

USB 스틱에 약간의 문제가 있습니다. Linux 컴퓨터(Fedora 20)에서 USB 스틱에 있는 파일과 폴더를 보고 조작할 수 있지만 Windows 컴퓨터에서 USB 스틱을 사용할 때 일부 항목이 나타나지 않습니다. 또한 Windows에 따르면 USB 스틱에 거의 2.9GB의 파일이 저장되어 있지만 사용할 수 있는 전체 파일은 500MB 이상에 불과했습니다. 왜 이런 일이 일어나는지는 모르겠지만, 이번이 처음이 아닙니다. 이 문제를 영구적으로 해결하려면 어떻게 해야 합니까?

답변1

고쳐 쓰다

그래서 오늘 아침에 연구를 하게 될 줄은 정말 몰랐습니다 NTFS. 하지만 아래 @AndrewMedico의 댓글 덕분에 몇 가지를 배웠습니다.

사실은 그 파일들이 streams이상해서 나를 혼란스럽게 한다는 것입니다. 하지만 분명히 그 문제는 더 깊어집니다. 이는 NTFSfile 과 매우 유사하게 동작하며 streams, Transactional NTFS변경 사항이 보장될 때까지 일부 백업 캐시에 파일 변경 사항을 커밋합니다. 그렇다면 파일은 전체적으로 원자적으로 완전하게 커밋됩니다. 나는 파일의 개념과 혼동됩니다 stream. 나는 그것이 매우 기본적인 유사한 개념이어야 하며 아마도 각 파일이 여러 개만 가질 수 있기 때문에 어떤 식으로든 관련되어 있다고 믿습니다 named. unnamed streams분명히 무슨 일이 일어나고 있는지 TNTFS.추측합니다.나는 유일한 사람이 아니예요:

개발자가 애플리케이션 개발 중에 고려해야 할 복잡성과 미묘한 차이로 인해 Microsoft는 향후 Windows 버전에서 TxF API를 더 이상 사용하지 않는 것을 고려하고 있습니다. 따라서 Microsoft는 개발자가 대안을 채택하는 대신 대안을 사용하여 조사할 것을 강력히 권장합니다.Transactional NTFSAPI 플랫폼은 Windows의 향후 버전에서는 사용하지 못할 수도 있습니다.

아래에 언급된 Windows 이미지 조각 모음을 수행할 때 파일이 사라졌다가 다시 나타나는 문제가 있었습니다. 겉보기에는 디스크를 완전히 제거한 후에도 실제로는 대부분 잘렸습니다. 당시 나의 이론은 Linux 캐시가 파일에 대한 변경 사항을 커밋하지 않았다는 것이었습니다 streams. 이제 예상대로 원자 커밋을 처리하지 못한다고 생각합니다.

파일 삭제

DeleteFileTransacted이 함수를 호출하면 파일이나 디렉터리가 삭제됩니다.아직도 눈에 띕니다외부 독자 여러분께.

*노트 모두* handles파일에 처리된 트랜잭션은 에 있어야 합니다 transaction. handles제대로 닫히지 않으면 delete이런 일이 발생하지 않습니다 . 삭제 작업 commit이 트랜잭션의 일부로 간주되도록 하려면 삭제 작업을 수행하기 전에 파일에 대해 열려 있는 모든 핸들을 닫아야 합니다 . 이는 Windows 파일 I/O 하위 시스템의 일부로서 작업이 트랜잭션이 아닌 경우에도 시스템이 파일의 마지막 핸들이 닫힐 때까지 실제로 파일을 삭제하지 않기 때문입니다.

디렉토리 삭제

RemoveDirectoryTransacted이 함수를 호출하면 디렉터리가 삭제됩니다.아직도 눈에 띕니다외부 독자 여러분께.

디렉토리 잠금 문제

트랜잭션 내에서 파일이 수정되면 파일 경로의 모든 디렉터리 구성 요소가 호출됩니다.이름 바꾸기에 대해 수정되었습니다.거래가 종료될 때까지. 즉, 시스템예방하다당신은이름 바꾸기트랜잭션이 커밋되거나 롤백될 때까지입니다. 진행 중인 트랜잭션 중에 수정된 파일의 조상인 디렉터리의 이름을 바꾸려는 시도는 오류와 함께 실패합니다.ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY.

여기에 더 많은 정보가 있습니다NTFS-3G:

대체 데이터 스트림(ADS)

NTFS는 모든 데이터를 스트림에 저장합니다. 모든 파일에는이름 없는 데이터stream그리고 명명된 데이터가 많이 있을 수 있습니다 streams. 파일의 크기는 이름이 지정되지 않은 데이터의 크기입니다 stream. 기본적으로 ntfs-3g읽기만 가능이름이 없는 데이터 stream.옵션을 사용하여"streams_interface=창"(lowntfs-3g에서는 불가능) 명명된 데이터 스트림을 읽을 수 있으며 콜론 뒤에 스트림 이름을 지정하기만 하면 됩니다. 예를 들어:

cat some.mp3:artist

명명된 데이터 스트림은 일반 파일처럼 동작하므로 읽고 쓰고 삭제할 수도 있습니다(rm을 사용하여). "ntfs.streams.list" 확장 속성을 가져오면 파일에 있는 모든 명명된 스트림을 나열할 수 있습니다.

목적을 설정하려면 모듈 매개변수를 사용할 수 있습니다.

streams_interface=value

이 옵션은 사용자가 액세스하는 방법을 제어합니다.대체 데이터 스트림(ADS)즉, "None" 또는 "." named data streams중 하나로 설정할 수 있습니다. 이 옵션을 없음으로 설정하면 사용자는 지정된 데이터 스트림에 액세스할 수 없습니다. (불가능 ) 으로 설정하면 사용자는 Windows에서와 같이 접근할 수 있습니다(예: cat file:stream). 로 설정하면 지정된 데이터 스트림이 매핑되어 사용자가 작업할 수 있게 됩니다 .windowsxattrwindowslowntfs-3gxattrxattrs{get,set}fattr utilities기본값은 xattrLinux이고,다른 운영 체제에서는 사용할 수 없습니다.

내 생각엔 우리가 이 문제로 어려움을 겪을 수도 있을 것 같아요. 아마도 위에서 읽은 내용과 관련이 있을 것 같습니다. 변경 로그를 살펴보면 다음과 같습니다.

ntfs-3g:반환된 파일 형식이 수정되었습니다.readdir()

mkntfs:Windows 8을 준수 $Info stream하려면 하나를 연결하십시오 .$UpCase

ntfs-3g:a라는 이름은 deleted file편의를 위해 예약되어 있습니다.undeletion

위의 모든 내용은 적어도 일부와 관련이 있는 것으로 보입니다.삭제TNTFS위 문서에 언급된 문제입니다.

이것은Tuxera NTFS-3G는 무엇을 말합니까?:

파일을 삭제해도 디스크 공간이 확보되지 않는 이유는 무엇입니까?

이는 다음을 제외하고 대부분의 경우에 해당됩니다.

일부 데스크탑 구성에서는 파일이 실제로 삭제되지 않고 ‘Trash’파티션 루트에 있는 디렉토리로 이동됩니다. ‘.Trash-username’이러한 디렉터리가 비워지면 디스크 공간이 회수됩니다.

설계상 Linux 및 Unix는 삭제된 파일을 열어 두는 소프트웨어가 없는 경우에만 삭제된 파일을 위한 디스크 공간을 영구적으로 확보합니다. NTFS고정 크기 레코드(인덱스 노드)에 (1 kB) MFT작은 파일과 디렉터리를 저장하는 기능. 이러한 파일이 삭제되면 MFT레코드는 재사용 또는 삭제 취소로 표시되며 공간을 확보할 수 없습니다.

상태:NTFS-3G 문제가 아닙니다.

왜 파일을 휴지통으로 이동할 수 없나요?

현재 사용자가 휴지통 디렉터리를 소유한 경우에만 파일을 휴지통으로 이동할 수 있습니다. 이는 현재 사용자가 소유권을 갖도록 강제하거나 공통 소유권 및 권한 모드를 사용하여 파일 소유권이 활성화됨을 의미합니다.

지우기가 내 투표를 얻습니다.

디스크를 지우지 않으면 보기에 좋지 않습니다. 이는 아마도 나쁜 생각이 아닐 것입니다. Linux에서 이러한 파일에 액세스할 수 있으면 해당 파일을 백업하세요. 그런 다음 드라이버를 구해서 exFAT사용하세요. 훨씬 더 간단하고, 솔직히 말해서 파티션을 나누는 기능이었으면 좋겠다는 생각이 들기 시작했습니다.

아니면 그럴 수도 있지안정적인?

파일을 생성할 때 "작업이 지원되지 않음" 메시지가 나타나는 이유는 무엇입니까?

최신 드라이버가 이 문제를 해결했습니다., 업그레이드해주세요

오래된

여기에는 여러 가지 이유가 있을 수 있습니다.

  1. Linux에서는 ntfs3g드라이버가 파일을 표시할 수 있습니다.streams.이것은 잘 알려지지 않고 거의 사용되지 않는 파일 시스템 기능으로 NTFS주로 shadow copiesWindows 자체에서 버전이 지정된 파일을 저장하는 데 사용됩니다. 어쨌든 가끔은 그런 일이 일어난다.같은 파일두 개의 파일.아니면 훨씬 더 그렇습니다. ntfs3g디스크에 대한 Windows 유형 권한을 적절하게 처리하지 않고 마운트에서 파일을 제거하는 경우 이는 특히 지루할 수 있습니다. 사실, 당신은 변할 것입니다문서' streams.혼란스럽기 때문에 자주 사용되지 않는 것일 수도 있지만 다음을 살펴보세요.파일 스트림

  2. 귀하의 USB 플래시 드라이브는분할.Windows는 표시된 다중 파티션 디스크를 처리하지 않습니다.이동할 수 있는플래그 - 이것은 유닉스 방식의 중요한 부분입니다. 옵션이 있습니다 -루퍼스그리고디스크당장 생각나는 것은 두 가지다.

나는 말했다가능성이 더 높음이전에 두 번째 질문이 있었는데, 질문을 잘 살펴보면 첫 번째 질문이 귀하의 문제인 것 같습니다.

여담

저는 처음으로 Linux에서 Windows 설치 이미지를 구축했을 때 NTFS파일 에 대해 배웠습니다. 분명히 Windows 설치 중에 발생하는 대부분의 작업은 streams설치 프로세스 중에 streams아카이브의 파일이 .wim일반 파일로 변환된다는 것입니다. Linux 환경에서 이러한 문제를 해결하는 데 관심이 있다면 적극 권장합니다.wimlib.

하나 있는 것 같은데세 번째 가능성은,어쩌면 이것이다:

3. 파일이나 디렉터리가 없거나 사라지나요?

최상위 디렉터리가 완전히 비어 있으면 NTFS 볼륨이 탑재되지 않았을 가능성이 높습니다. 일부 파일만 누락된 경우 유니코드 UTF-8 변환 지원 기능이 완전히 내장된 NTFS-3G 2009.1.1 이상으로 업그레이드하세요.

Mac OS X를 사용하는 경우 FreeBSD는 디렉토리에 어떤 파일도 표시하지 않습니다.

듀얼 부팅에 Windows 8을 사용하는 경우 빠른 다시 시작 기능이 활성화되어 있을 수 있습니다. 이로 인해 Windows 8이 다른 운영 체제에서 내부 파티션에 적용한 변경 사항을 무시할 수 있습니다. 데이터 손실을 방지하는 안전한 방법은 Windows 관리자로 다음 명령을 실행하여 빠른 다시 시작을 비활성화하는 것입니다.

powercfg /h off

컴퓨터에 SSD가 연결되어 있는 경우 Windows는 이를 하드웨어("Intel Rapid Response Technology") 또는 소프트웨어("Expresscache", "ReadyCache" 등)에 의해 제어되는 캐시로 사용할 수 있습니다. 이 기능은 일반적으로 Windows 및 Linux와 호환되지 않으므로 비활성화해야 할 수도 있습니다.

:

답변2

드라이브 옵션에서 드라이브를 검색하면 됩니다.

그러나 NTFS 파일 시스템에서 손실된 모든 데이터를 복구합니다.

관련 정보