암시 적 파일 경로와 함께 Unix tar 명령을 어떻게 사용합니까?


9

tar -xvf명령을 사용하고 있으며 명시적인 경로를 사용하고 있습니다. 그러나 경로가 가득 찼습니다.
예:

tar -xvf 13.2.tar

/mnt폴더 의 경로를 사용하고 있습니다. /폴더가 꽉 찼습니다.

암시 적 경로로 파일을 tar하는 방법은 무엇입니까?


질문을하는 현재의 방식이 가장 정교한 수정 구슬조차 약간 흐릿하게 보이게하므로 정확히 무슨 일이 일어나고 있는지 명확하게 설명해야합니다.

답변:


2

일반적으로 아카이브를 만드는 동안 루트 부분 을 유지 tar하려면 --absolute-names또는 --absolute-paths옵션이 필요합니다 '/'. 그런 식으로 강제하더라도 추출은 선행을 건너 뜁니다 '/'.


그러나 행간을 가진 아카이브가 '/'있고 추출하는 동안 tar를 건너 뛰지 않으면 NoahD의 답변이이 형식으로 작동해야합니다.

pax -r -s ',/mnt,/new/path,' -v -f 13.2.tar

내 생각 엔 pax당신이로 압축 해제 한 후 파이프에 필요하므로, 압축 파일을 처리하지 않습니다 pax.
이것은 다음과 같이 진행됩니다 (아직 압축 된 아카이브가 있다고 가정)

gunzip -c 13.2.tar.gz | pax -r -s ',/mnt,/new/path,' -v

방금 구글 에서이 위키 페이지 를 찾았습니다 .


2

표준 (일명 명시 적)과 상대 (암시 적이라고 부르는 것)의 차이점 /은 처음에 를 사용하는지 여부 입니다.

예를 들어, 현재 작업 디렉토리가 /usr/home/bob인 경우 다음 명령은 동일한 효과를 갖습니다.

tar -xvf foo.tar *
tar -xvf ./foo.tar *
tar -xvf ./foo.tar ./*
tar -xvf /usr/home/bob/foo.tar *
tar -xvf /usr/home/bob/foo.tar ./*
tar -xvf /usr/home/bob/foo.tar / usr / home / bob / *

그러나 나는 이것이 당신의 질문이 아니라고 생각합니다. 디스크 사용량을 결정하고 가득 차지 않은 디렉토리를 찾아야하는 것처럼 보입니다. 이 df명령 으로 수행 할 수 있습니다 .

df -k # space on disk in kilobytes
df -m # as above, but in meg
df -g # as above, but in gig

또한 mount어떤 장치에 어떤 파일 시스템이 마운트되어 있는지 보여줄 수 있습니다.


0

상대 경로로 tar 파일을 만들려면

cd /parent/of/dir/to/tar
tar cvf subdir.tar subdir

현재 작업 디렉토리가 아닌 특정 디렉토리에 tar를 압축 해제하려면 -C (대문자 C) 스위치를 사용하십시오.

절대 경로 이름을 가진 파일을 루트가 아닌 다른 위치로 풀려면,로 엉망이 될 수 있습니다 chroot(1).


0

나는 pax 가 트릭을 할 것이라고 믿는다

pax -r -s, / mnt, / gooddir, -f 13.2.tar

새 루트 디렉토리로 대체 할 수 있어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.