cp를 사용하여 ~/.config를 외부 드라이브에 복사했지만 "일반 파일을 생성할 수 없습니다... 파일이 존재합니다" 오류가 발생함

cp를 사용하여 ~/.config를 외부 드라이브에 복사했지만 "일반 파일을 생성할 수 없습니다... 파일이 존재합니다" 오류가 발생함

/mnt/e명령은 매우 간단하며 외부 드라이브의 하위 디렉터리인 cp -r ~/.config .. 매번,매번실행했는데 동일한 파일 세트가 올바르게 복사되지 않습니다.

cp: cannot create regular file './.config/yarn/global/node_modules/ws/lib/validation.js': File exists cp: cannot create regular file './.config/yarn/global/node_modules/ws/lib/websocket.js': File exists cp: cannot create regular file './.config/yarn/global/node_modules/ws/lib/sender.js': File exists cp: cannot create regular file './.config/yarn/global/node_modules/ws/lib/constants.js': File exists cp: cannot create regular file './.config/yarn/global/node_modules/ws/lib/receiver.js': File exists cp: cannot create regular file './.config/yarn/global/node_modules/debug/Readme.md': File exists

명령이 실행될 때 파일은 확실히 존재하지 않으며 매개변수를 추가해도 -f아무런 차이가 없습니다. 그런데 여기서 상황이 이상해집니다. 시스템은 파일을 복사하지만 결과적으로 매우 다른 내용이 됩니다. 이러한 차이점은 손상된 복사본으로는 설명할 수 없습니다. 이 Readme.md 파일의 차이점을 실행하면:

diff -u ~/.config/yarn/global/node_modules/debug/Readme.md ./.config/yarn/global/node_modules/debug/Readme.md

출력에서 다음 두 줄을 찾았습니다.

- Note that PowerShell using different syntax to set environment variables. + Note that PowerShell uses different syntax to set environment variables.

여기서 무슨 일이 일어나고 있는 걸까요? ! 복사본을 실행하면 파일의 업데이트된 버전을 얻는 것과 같습니다. 문제는 명령을 실행할 때마다 해당 특정 파일에서 동일한 차이가 발생한다는 것입니다. 이는 의미가 없습니다.

분명히 나는 ​​조금 압도당했을 것입니다. 나는 대답을 읽었다.일반 파일 'filename'을(를) 만들 수 없습니다. 파일이 존재합니다.하지만 이해가 안 돼요. strace답변에 있는 스크립트를 사용해 보았 으나 벽에 부딪혔습니다(추적 파일이 생성되지 않음). 저는 단지 원시인 Linux 사용자일 뿐이고 "진짜" Linux도 사용하지 않고 WSL(Ubuntu 16.04)을 사용하고 있습니다. 여기서 문제가 무엇인지 간단한 용어로 설명할 수 있는 사람이 있습니까? 분명히 어떤 프로세스가 방해하고 있는 것 같습니다. 추측할 수 있지만 그 외에는 아무것도 모릅니다.

고쳐 쓰다:

문제는 소스 하위 디렉터리에 이름은 같지만 대소문자가 다른 파일(Validation.js, WebSocket.js 등)이 있다는 것입니다. 문제는 WSL 사용자로서 Windows로 포맷된 드라이브에 복사하므로 대소문자를 구분하는 하위 디렉터리가 지원되지 않는다는 것입니다. 그러나 대략적인 조사에 따르면 Windows 10 버전 1803(내가 가지고 있는)부터 NTFS 파일 시스템에서 대소문자를 구분하는 하위 디렉터리가 가능한 것으로 나타났습니다. 또한 WSL에서 생성된 하위 디렉터리는 자동으로 대/소문자를 구분합니다(협회):

Linux용 Windows 하위 시스템(Bash 셸)에서 실행되는 Linux 도구는 이제 대/소문자 구분 플래그가 설정된 폴더를 생성할 수 있습니다. 따라서 mkdir 명령을 사용하여 Bash 셸 내에서 디렉터리를 생성하든, 개발 도구가 디렉터리를 생성하든 상관없이, 생성된 디렉터리는 설치된 Windows 파일 시스템에서 생성하더라도 자동으로 대/소문자를 구분합니다.

WSL에서 대상 하위 디렉터리를 만들지 않아서 삭제하고 WSL에서 다시 만들었습니다. 그러나 내 문제는 존재해서는 안 되지만 여전히 존재합니다. 어떤 아이디어가 있나요?

관련 정보