2012-07-14 2 views
1

libcurl을 사용하여 Apache FtpServer와 인터페이스하는 C++ 프로그램을 작성하고 있습니다. 원래 LIST 명령을 사용하여 디렉토리의 내용을 가져 왔지만 많은 정보를 제공했지만 많은 불필요한 오버 헤드를 초래하는 방법을 구문 분석해야했습니다 (특히 수십만 명의 작업을 수행 할 때 특히 그렇습니다).). 또한 유효한 타임 스탬프가 필요했고 그로 인해 내년 1 월 1 일에 내 컴퓨터에있는 모든 파일이 FTP 서버와 비교하여 구식으로 보였던 해를 포함하지 않는 속기를 제공했습니다. 내 솔루션은 NLST 명령을 사용하여 이름 만 가져온 다음 MDTM을 사용하여 각각의 타임 스탬프를 다운로드하는 것이 었습니다. 이것은 굉장했으나 파일이 디렉토리인지 여부를 알 수없는 주요 문제에 부딪혔습니다.파일이 FTP 서버의 디렉토리인지 확인하십시오.

나는 처음 플래그가 d로 설정되어 있는지 확인하기 위해 권한을 사용하는이 작업을 수행 할 수있는 가장 쉬운 방법을 생각하고있다. FTP는이 기능을 갖고 있지 않습니다. 파일 이름이 디렉토리인지 파일인지 쉽게 알 수 있습니까?

답변

1

파일에 CWD 명령을 사용하여 파일이 디렉터리인지 여부를 테스트 할 수 있습니다. 하지만 실패는 권한이 부족하다는 것을 의미 할 수 있으므로 오류 코드를 확인해야합니다. 예를 들어 :

ftp> cd atom.xml 
550 Can't change directory to atom.xml: Not a directory 

는 다른 방법으로 테스트 할 파일을 다시 NLST 명령을 사용할 수 있습니다. 일반 파일 인 경우 파일 이름을 다시 가져옵니다. 그렇지 않으면 디렉토리의 내용 목록을 얻게됩니다.

ftp> nlist atom.xml 
200 PORT command successful 
150 Connecting to port 53912 
atom.xml 
226 1 matches total 

ftp> mkdir foo 
257 "foo" : The directory was successfully created 
ftp> nlist foo 
200 PORT command successful 
150 Connecting to port 53928 
226 0 matches total 
+0

정확한 답변이 아니지만 찾고있는 해결책이 아닙니다. 고마워. – retrohacker

관련 문제