이것은 중복이 아닙니다상위 디렉터리 없이 tar 아카이브 만들기
이렇게 하면 tar -czf archive directory
해당 디렉토리가 아카이브에 추가됩니다. directory
디렉토리 자체 대신 폴더의 파일을 추가하고 싶습니다 . 어떻게 해야 합니까? 관련되지 않은 답변을
제안해 주세요.cd
directory
이것은 표시된 내용과 중복되지 않습니다. 내용이 포함
된 디렉토리가 있습니다 .somedir
abc
xyz
ls somedir
abc xyz
폴더 가 아닌 파일이 포함된 아카이브를 만들고 싶습니다 abc
.xyz
somedir
고쳐 쓰다: 명령을 사용하면 tar -C /home/username/dir1/dir2 -cvf temp.tar yourarchive
(내 질문에 대한 답변은 중복이라고 함)
다음과 같은 결과를 얻습니다.
내가 원하는 것은 tar czf archive.tar.gz -C yourarchive .
내가 이것을 얻는 것입니다(이것은 내가 원하는 것에 충분히 가깝습니다.):
내가 원하는 것은 다음과 같습니다(직접 파일, 폴더 없음).
답변1
사용 -C
:
tar czf archive -C directory .
이는 작업 디렉토리로 tar
사용 하고 디렉토리( )에 포함된 모든 것을 아카이브하도록 지시합니다.directory
.
사용은 -C
사용과 거의 동일합니다 cd
. 위의 내용은 archive
시작 시 현재 디렉터리를 기준으로 해석된 다음 해석되기 전에 작업 디렉터리를 로 변경합니다.tar
tar
directory
.
tar -C
얼마나 광범위하게 지원되는지는 잘 모르겠지만 모든 Linux 배포판이 이를 지원해야 합니다.
답변2
노력하다
tar cvf archive.tar -C somedir $(ls somedir)
어디
cvf
~ 할 것이다씨다시 말하다V엘보스(ly)에프엘리Archive.tar
-C somedir
tar에게 사용하도록 지시합니다.somedir
$(ls somedir )
디렉터리의 파일을 나열하고$( )
결과를 인수로 전달합니다.
편집하다:
주석에서 지적했듯이 도트 파일을 나열하려면 ( ls -als -A
대신 )을 사용하십시오.
답변3
당신은 이것을 할 수 있습니다인원수(1), 이는 tar의 posix 후속 버전이었지만 결코 인기를 끌지 못했습니다. tar 파일에 쓸 수 있으며 원하는 파일 이름 변환을 수행할 수 있습니다.
pax -wzf archive -s '|directory/\?||' directory
이는 다음과 같이 분류될 수 있습니다.
-w
아카이브 쓰기(-c
tar와 동일)-z
압축된 아카이브(tar와 동일)-f archive
파일에 쓰기archive
(tar와 동일)-s '|directory/\?||'
아카이브의 파일 이름을 바꾸십시오. 문자열을directory
선택적/
빈 문자열로 바꿉니다./
디렉토리 자체는 a로 끝나지 않지만/
다른 모든 구성원은 끝나기 때문에 선택 사항이 필요합니다/
. 이 문자열^
은 첫 번째 항목(예:sed(1)
)만 대체하고 모든 파일은 다음으로 끝나므로 문자열( )의 시작 부분에 고정할 필요가 없습니다.directory/\?
명확하게 하기 위해 다음을 추가할 수 있습니다.
-x ustar
POSIX tar 파일 작성
그러나 이것이 기본 설정입니다.
Linux 또는 BSD 패키지 저장소에서 pax를 찾을 수 있어야 합니다. GNU pax가 있는 것 같은데 그 상태를 모르겠습니다. 데비안에는 pax의 BSD 버전이 있는 것 같습니다.