본문 바로가기
기타/Windows

[windows] Filename too long 에러 해결

by A6K 2022. 6. 8.

윈도우를 사용하다보면 'Filename too long' 에러를 만나는 경우가 있다. 윈도우 시스템은 리눅스와 다르게 파일 경로의 길이 제한이 있기 때문에 생기는 에러다.

Windows 10 Home의 경우

우리의 불친절한 Windows 10 Home은 레지스트리 편집기를 찾아들어가서 수정해야한다. 레지스트리 편집기를 사용 할 때에는 불필요하게 다른 키들을 수정하거나 지우지 않도록 주의해야한다.

레지스트리 편집기를 실행하는 방법에는 두가지가 있다.

  1. 작업 표시줄의 검색 상자에 regedit 혹은 레지스트리 편집기를 입력
  2. 시작을 우클릭한 다음 실행을 선택(혹은 [윈도우키] + R)한 후 regedit 입력

HKEY_LOCAL_MACHINE → SYSTEM → CurrentControlSet → Control → FileSystem을 따라 내려가면 LongPathsEnabled 항목이 있다. 이 키 값을 더블 클릭하고 값에 1을 입력한다.

확인을 누르면 적용이 된다.

Windows 10 Pro / Windows 10 Enterprise의 경우

윈도우 10 프로와 엔터프라이즈에서는 그룹 정책 편집기를 이용하면 된다.

그룹정책 편집기를 실행하기 위해서는 작업 표시줄의 검색 상자([윈도우키] + Q)에 gpedit 혹은 그룹 정책 편집을 검색하면 된다.

그룹 정책 편집기가 열리면 ‘컴퓨터 구성’ → ‘관리 템플릿’ → ‘시스템’ → ‘파일 시스템’ 항목을 따라들어간다. 그러면 ‘Win32 긴 경로 사용’이라는 정책을 볼 수 있다.

이 정책을 더블클릭하면 에디팅 창이 열린다. 구성되지 않음 항목으로 되어 있을 텐데 사용으로 변경하고 확인을 클릭해 적용한다.

정책 편집을 확인했지만 바로 적용되지는 않는다. 윈도우를 재시작하면 변경된 정책이 적용된다.

만약 재시작 없이 바로 적용하고 싶다면 시작을 우클릭한 다음 실행을 선택(혹은 [윈도우키] + R)한 후 cmd를 입력해서 명령 프롬프트를 입력한다.

그리고 다음 명령을 입력한다.

> gpupdate /target:computer /force

그러면 명령 프롬프트가 실행되면서 정책들을 강제로 업데이트한다.

실행이 종료되면 윈도우 시스템에서 긴 파일 경로를 사용할 수 있게 된다.

git clone이 실패하는 경우

git clone이 실패하는 경우에는 이 조치만으로는 부족했다.

PS C:\\workspace\\github> git clone <https://github.com/apache/hadoop>
Cloning into 'hadoop'...
remote: Enumerating objects: 1539899, done.
remote: Counting objects: 100% (249/249), done.
remote: Compressing objects: 100% (184/184), done.
Receiving objects: 100% (1539899/1539899), 525.80 MiB | 4.99 MiB/s, done.650

Resolving deltas: 100% (774428/774428), done.
error: unable to create file hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase/hadoop-yarn-server-timelineservice-hbase-client/src/main/java/org/apache/hadoop/yarn/server/timelineservice/reader/filter/TimelineFilterUtils.java: Filename too long
error: unable to create file hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase/hadoop-yarn-server-timelineservice-hbase-client/src/main/java/org/apache/hadoop/yarn/server/timelineservice/storage/HBaseTimelineReaderImpl.java: Filename too long
error: unable to create file hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase/hadoop-yarn-server-timelineservice-hbase-client/src/main/java/org/apache/hadoop/yarn/server/timelineservice/storage/HBaseTimelineSchemaCreator.java: Filename too long
error: unable to create file hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase/hadoop-yarn-server-timelineservice-hbase-client/src/main/java/org/apache/hadoop/yarn/server/timelineservice/storage/HBaseTimelineWriterImpl.java: Filename too long
warning: unable to access 'hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase/hadoop-yarn-server-timelineservice-hbase-client/src/main/java/org/apache/hadoop/yarn/server/timelineservice/storage/application/.gitattributes': Filename too long
error: unable to create file hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase/hadoop-yarn-server-timelineservice-hbase-client/src/main/java/org/apache/hadoop/yarn/server/timelineservice/storage/application/ApplicationTableRW.java: Filename too long
error: unable to create file hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase/hadoop-yarn-server-timelineservice-hbase-client/src/main/java/org/apache/hadoop/yarn/server/timelineservice/storage/application/package-info.java: Filename too long
...

여전히 실패하던데 찾아보니 git은 예전 버전 윈도우 API를 사용는 msys를 이용하고 있었고 여기에는 260자의 파일이름 제한이 있다고 한다.

문제를 해결하기 위해서는 PowerShell이나 명령 프롬프트를 관리자 권한으로 실행한 다음 아래 명령어를 실행하면 된다.

> git config --system core.longpaths true

이를 실행하고 나면 문제없이 git clone이 동작한다.

추가로 파일 경로에 유니코드가 들어가는 경우라면 32,767자까지 제한이 늘어난다고 한다. 작업 디렉토리에 한글을 추가하면 됐을라나…

댓글