tar: 멤버 이름에서 선행 "/" 제거

tar: 멤버 이름에서 선행 "/" 제거
root@server # tar fcz bkup.tar.gz /home/foo/
tar: Removing leading `/' from member names

/이 문제를 해결하고 파일 이름을 보존하려면 어떻게 해야 합니까 ?

답변1

STDERR에 인쇄된 "멤버 이름에서 선행 '/' 제거"를 제거하고 싶지만 여전히 tar 현명한 기본값과 같은 선행 슬래시를 유지하려는 경우 좋은 해결책을 보았습니다.여기리뷰어 timsoft가 제공했습니다.

해결 방법은 -C 옵션을 사용하여 디렉터리를 루트(/)로 변경한 다음 보관할 파일 트리를 지정하는 것입니다.아니요슬래시는 이제 상대 경로만 필요하기 때문입니다. 이는 일반 tar create 명령과 동일한 작업을 수행하지만 제거가 필요하지 않습니다.

tar fcz bkup.tar.gz -C / home/foo/

답변2

--absolute-names이 기능을 비활성화하려면 또는 옵션을 사용하십시오 -P.

tar fczP bkup.tar.gz /home/foo
tar fcz bkup.tar.gz --absolute-names /home/foo

답변3

이것은 실제로 문제가 아닌 기능입니다. 절대 위치가 있는 아카이브는 보안 위험이 있습니다. 공격자는 이러한 아카이브를 사용하여 사용자를 속여 중요한 시스템 위치에 파일을 설치하도록 할 수 있습니다.

예, 사용할 수 있습니다 -P. 그러나 tar가 슬래시를 제거하도록 허용하고 단순히 아카이브 사용자에게 루트 디렉터리에서 명시적으로 추출을 수행하도록 요청하는 것이 잘못된 이유는 무엇입니까? 그런 다음 실수가 아닌 의도적으로 중요한 시스템 위치에 영향을 미칩니다.

답변4

이것이 제가 무차별 대입 방식을 사용하여 수행한 작업입니다 2>&1 | grep -v "Removing leading".

예를 들어:

tar -cf "$BKUPDIR/${BKUPFILE}.tar" --overwrite --exclude '.*' --one-file-system "$SRCDIR" 2>&1 | grep -v  "Removing leading"

관련 정보