파일을 패키징하려고 합니다.
file1
folder2/hello
folder2/world
file3
사용자 정의 폴더에 캡슐화되도록 tar 파일에 저장하면 다음 tar -tvf archive.tar
과 같습니다.
mycustomfolder/file1
mycustomfolder/folder2/hello
mycustomfolder/folder2/world
mycustomfolder/file3
현재 이 문제를 해결하기 위해 나는:
file1
생성folder2
하고 archive(x) 합니다file3
.- 폴더를 생성합니다
mycustomfolder
. - 아카이브(x)를 다음으로 추출합니다.
mycustomfolder
- 프로필 만들기(y)
mycustomfolder
나는 그들이 이 일을 향한 한 단계 또는 더 나은 방법이 될 수 있다고 생각하지 않을 수 없습니다.
답변1
아카이브를 자체 디렉토리에 추출하려면(일반적으로 이 작업을 수행하지 않는 디렉토리는 혼란스러울 수 있으므로 더 좋습니다) 디렉토리를 생성하고 콘텐츠 트리를 그 디렉토리로 이동/복사하면 됩니다. , 두 번째 예에 표시된 대로:
mycustomfolder/file1
mycustomfolder/folder2/hello
mycustomfolder/folder2/world
mycustomfolder/file3
그 다음에 tar -cvf myarchive.tar mycustomfolder
. 발췌, tar -xvf myarchive.tar
.
먼저 디렉토리를 생성하고 싶지 않다면,파일 이름을 변환하고 디렉터리 접두사를 추가할 수 있습니다.
tar --xform="s%^%mycustomfolder/%" -cvf myarchive.tar file1 folder2 file3
구문을 사용하여 변환(참조 man tar
) . 이름이 지정된 폴더가 생성되었지만 (== 이상한 동작 IMO) (정확하게는) "잘못된 변환 표현식"이었기 때문에 구분 기호를 대신 sed
사용했습니다 .%
/
s/^/mycustomerfolder\//
mycustomfolder\
s/^/mycustomfolder//