아카이브를 생성할 때 대상 디렉토리가 존재하지 않는 경우 자체를 생성하도록 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
생성 모드에 있는 경우 존재하지 않는 디렉터리를 보관할 필요가 없기 때문에 귀하의 것과 일치하는 질문이 없습니다.