2012-06-11 1 views
0

Runtime.exec()을 사용하여 Java에서 rsync를 호출하고 숨김 파일/폴더를 무시하고 싶습니다. 명령은 간단하고 명령 행에서 매력처럼 작동합니다.rsync가 Java Runtime exec에 전달하여 올바른 폴더를 찾을 수 없음

rsync -r --exclude=".*" source destination 

나는 이러한 인수를 정확하게 중단하여 String []으로서 exec()에 전달할 수있는 다양한 조합을 시도해 왔습니다. 나는 실패하고 내 마음을 잃을 것 같아. 나는, 전송이 완료되지만 숨겨진 파일/폴더를 포함 ("오류로 인해 부분 전송"입니다) 내가 exit 23으로 결국 대부분의 시간

String[]{ "rsync", "-r", "--exclude", "=", ".*", source, destination}); 
String[]{ "rsync", "-r", "--exclude", "=", "\".*\"", source, destination}); 
String[]{ "rsync", "-r", "--exclude=\".*\"", source, destination}); 

을 시도 무엇

몇 가지 예입니다.

+1

Windows 또는 Unix에서 문제가 있습니까? Unix상의'exclude = ". *"부분은 일반적으로 프로그램 자체가 아닌 쉘에 의해 처리됩니다. 이 경우 명령 앞에'sh -c'를 실행할 수 있습니다. – Alex

+0

@Alex 죄송합니다, 지정해야합니다 - 이것은 우분투를 실행하는 컴퓨터에 있습니다. –

+0

"--exclude = '. *'"또는 "--exclude =. \\ *"로 시도해 보셨습니까? 쉘 덩어리 주위에서 작동 할 수도 있습니다. –

답변

1

상기 한 바와 같이, ".*"은 쉘에 의해 평가된다. 모든 옵션을 파일에 넣는 것이 더 좋으며 rsync @myfile을 사용하십시오.

BTW 원래 명령이 서브 디렉토리의 .* 디렉토리를 제외하는지 궁금합니다.

+0

흥미로운 질문 - .svn 디렉토리를 제외하려고합니다. 그걸 확인하고 그들이 모든 레벨에서 제외되고 있는지 확인해야합니다. –

+1

대답은 예, 서브 디렉토리의 숨겨진 항목을 제외합니다. –

+0

감사합니다 backinfo; 하나는 편집증을 갖습니다. –