FAT32에 당하다

양동찬 서버 백업을 내 외장하드에 테스트해서 풀던 중 특정한 파일에서 오류가 났다. LANG=ko_KR.EUCKR 이라는 환경 변수를 줘 보아도 파일 이름이 깨지는 것은 계속 일어났다. 그 파일들은 UTF-8 시스템에 비정상적으로 업로드된 인코딩이 EUC-KR인 파일들이었고, 그게 외장하드에서 문제가 되었다. FAT32 파일 시스템의 문자 범위 제한 때문인지 모르겠지만 계속 파일을 열 수 없다는 오류 덕분에 복구가 힘든 줄 알았다.

그런데 scp를 통해서 백업 파일들을 서버에 복사한 다음 서버에서 tar xvf를 시도해 보았다. 멀쩡하게 잘 풀린다? 그 다음 convmv 시켜서 인코딩을 원위치시킨 다음 처리를 끝냈다. 태터툴즈 DB는 가상 서버 안에서 sql을 복사해 오는 것으로 끝났다. 좀 일이 어이없이 돌아가는 것 같았다. 그게 무슨 일인지 궁금해서 좀 뒤져 보았다.

예상대로 위키백과가 답을 주었다. 일부 ASCII 문자열들이 FAT에서는 제어 문자로 사용되고 있었고 파일 이름 문자로 사용될 수 없었다. 아마 비정상적인 UTF-8 시퀀스를 처리하면서 이런 문자를 쓰려고 시도를 했고, 그 결과 읽을 수 없는 파일 이름이 나온 것 같다. 정상적인 UTF-8 시퀀스라면 이런 일이 없을 것 같은데 말이다. 서버의 파일 시스템은 XFS였고, XFS에는 특별히 이런 제어 문자 제한이 없었던 것 같다. 그 덕분에 정상적으로 파일 압축을 풀 수 있었다.

뭐 결론은 convmv를 통해서 끝냈다. 하여간 꽤나 재미있는 삽질이었다.

Posted by peremen

2007/06/26 10:57 2007/06/26 10:57
Response
0 Trackbacks , 2 Comments
RSS :
http://blog.peremen.name/rss/response/124

Trackback URL : http://blog.peremen.name/trackback/124

« Previous : 1 : ... 149 : 150 : 151 : 152 : 153 : 154 : 155 : 156 : 157 : ... 271 : Next »

블로그 이미지

Life is gonna take you exactly where you wanna go

- peremen

Archives

Authors

  1. peremen

Calendar

«   2012/05   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31