파일 목록 앞에 공백이 있는 경우 tar가 100% CPU에서 정지되는 이유는 무엇입니까?

파일 목록 앞에 공백이 있는 경우 tar가 100% CPU에서 정지되는 이유는 무엇입니까?

--files-from <LISTFILE>이 옵션을 사용하고 <LISTFILE>선행 공백이 포함된 경우 Tar는 100% CPU 로드로 중단됩니다. 왜 그런 겁니까?

재생산하려면: 임의의 콘텐츠가 포함된 두 개의 파일 file1과 다음을 포함하는 파일이 제공됩니다 file2.list

file1
  file2

실행하면 tar czf test.tar.gz --files-from list명령이 완료되지 않고 시스템 로드가 약 1이 됩니다.

list내가 공부로 바꾸면

file1
file2

위의 tar명령이 성공적으로 완료되었습니다.

이는 Ubuntu 14.04.2 LTS 서버 버전과 Ubuntu 14.10 데스크탑 모두에서 발생합니다. 둘 다 GNU tar 1.27.1을 사용합니다.

답변1

이 동작을 재현했습니다. 버그인 것 같습니다.

여기에서 tar v1.26으로 다운그레이드하여 문제를 해결했습니다.https://packages.debian.org/wheezy/amd64/tar/download(Debian/Ubuntu를 사용하는 경우 해당 .deb 버전을 다운로드하고 dpkg -i를 사용하여 설치하세요.)

답변2

귀하가 설명하는 작업을 수행할 때 tar에서 오류가 발생할 수는 있지만 귀하가 얻은 결과를 재현할 수는 없습니다.

이를 무시하고 파일 이름 앞에 공백이 있는 목록을 제공하는 것은 올바르지 않습니다. Unix에서는 공백이 중요하지 않습니다. tar에게 파일 이름이 "file2"라고 말하면 tar는 "file2"라는 파일을 찾고 찾을 수 없으면 오류를 발생시킵니다.

file2의 이름을 바꾸는 경우:

mv file2 '  file2'

그런 다음 tar를 실행하면 끝입니다.

어느 쪽이든 tar는 시스템에서 발생한 것처럼 충돌하는 대신 오류가 발생해야 합니다.

관련 정보