아카이브가 생성될 때 폴더가 존재하지 않는 경우 tar를 사용하여 폴더를 생성하는 방법

아카이브가 생성될 때 폴더가 존재하지 않는 경우 tar를 사용하여 폴더를 생성하는 방법

아카이브를 생성할 때 대상 디렉토리가 존재하지 않는 경우 자체를 생성하도록 tar 옵션이 있습니까?

그래서 폴더는 있지만 /1/2폴더는 없습니다 /1/2/3/. 이를 달성하기 위해 tar 옵션을 사용할 수 있습니까?

스크립트로 필요한데 옵션이 없다면 이런 식으로 하는 게 낫지 않을까요?

mkdir /1/2/3/ &> /dev/null

폴더가 존재하지 않으면 생성되지만 이미 존재하는 경우에는 모두 비워두기 때문에 오류가 발생하지 않습니다.

이제 이 방법을 사용하면 잘못될 가능성이 있는 것이 있나요?

기본적으로 사용자를 삭제하는 스크립트를 만들고 있지만 스크립트가 사용자를 삭제하기 전에 사용자의 홈 디렉터리를 보관하는 옵션을 선택할 수 있습니다. 다른 컴퓨터에서 스크립트를 사용할 수 있도록 하려면 /archives다른 컴퓨터에 있을 수도 있고 없을 수도 있는 폴더를 만들어야 합니다.

tar는 분명히 아카이브에 대해 지정한 경로를 재귀적으로 생성할 수 없기 때문에(예를 들어, 존재하지 않는 경우 /archives/users작성하면 생성할 수 없습니다.tar -czf /archives/users/user1.tgz /home/user1//archives

내 솔루션에 대한 질문이 생깁니다. 쓰기 mkdir -p /archives/users/ &> /dev/null. 이게 문제가 될까요? 이 스크립트는 사용자 제거 스크립트이므로 sudo를 통해서만 실행할 수 있습니다.

답변1

Tar는 실제로 존재하는 데이터만 결합할 수 있습니다.

디렉토리가 존재하는지 미리 확인하는 것이 더 원활한 방법이라고 생각합니다. 접근 방식의 문제점은 디렉터리를 만들 수 없는 경우 오류 메시지가 표시되지 않는다는 것입니다.

이것은 예이다시험:

test ! -d /1/2/3 && mkdir /1/2/3

답변2

기본 동작은 tar아카이브를 추출할 때 누락된 디렉터리를 생성하는 것입니다.

cpio대신 을 사용하는 경우 상황이 다르므로 누락된 디렉터리를 생성하도록 지시하는 옵션을 tar제공해야 합니다 .cpio-d

생성 모드에 있는 경우 존재하지 않는 디렉터리를 보관할 필요가 없기 때문에 귀하의 것과 일치하는 질문이 없습니다.

관련 정보