tar -xvf는 디렉토리에서 기존 파일을 제거합니까?


10

tar 아카이브가 있고 사용하고 싶습니다 tar -xvf.
이 tar 아카이브에는 몇 개의 파일을 포함하는 디렉토리 트리가 있습니다. 내 solaris 10 시스템에는이 디렉토리 트리가 이미 존재하며 그 안에 몇 개의 파일이 있습니다.
압축을 풀면 전체 디렉토리 트리를 덮어 쓰거나 아카이브에 포함 된 파일 만 덮어 쓰나요?
보관소에 상대방이없는 파일이 삭제됩니까?


언제든지 테스트 .tar와 테스트 디렉토리를 작성하여 사용해 볼 수 있습니다. 자신이 생각하는 답은 여기있는 누군가가 제공 한 답보다 훨씬 오래 지속됩니다.
Jarvin

내 대답은 아니오 야. 충분히 열심히 생각하면 아카이브에서 파일을 추출하는 프로그램이 관련이없는 파일을 완전히 삭제한다는 것은 말이되지 않습니다.
Fosco

답변:


6

이미 존재하는 중복 파일은 시스템에 따라 압축을 풀거나 덮어 쓰지 않을 수 있습니다. 그러나 일반적으로 기본적으로 수행됩니다. 아카이브에 있지만 시스템에는없는 파일은 시스템의 새 디렉토리 나 기존 디렉토리에 추가됩니다.

디르 /test

/1/a
c

보관 test.tar

/1/b
d

아마도 다음과 병합 될 것입니다 :

/1/a
/1/b
c
d

-ktar 명령에 플래그를 추가하면 대상 디렉토리의 파일을 덮어 쓰지 않습니다.

tar -xvkf test.tar

@BP : csh (여전히 Sun의 기본 쉘?)에 "노 클로버"쉘 변수가 설정되어 있으면 덮어 쓰기가 쉘에 종속 될 수 있습니다.이 변수는 설정시 우발적 인 덮어 쓰기 동작을 방지합니다.
hotei

BloodPhilia와 hotei에게 감사드립니다. 내 시스템에서 테스트를 수행했으며 tar -xvf는 이미 존재하는 파일을 덮어 쓰고 존재하지 않는 파일을 추가합니다. 내가 알고 싶은 것은 전체 디렉토리를 덮어 써서 해당 디렉토리의 시스템에 있지만 아카이브에없는 파일을 잃을 가능성이 있는지 여부입니다. 예를 들어 : dir.tar dir / file2에 있습니다. 내 시스템에는 dir / file1, dir / file2 및 dir / file3이 있습니다. tar -xvf dir.tar를 수행하면 전체 dir을 덮어 쓰고 더 이상 file1과 file3을 포함하지 않을 수 있습니까?
Felicia

@hotei : noclobber(POSIX 셸 btw에도 있음) >foo는 셸에서 리디렉션 된 파일에만 영향을줍니다 . 타르에는 영향을 미치지 않습니다.
Gilles 'SO- 악마 중지'

@hotei noclobber는 쉘에서 리디렉션을 통해 파일을 덮어 쓰지 못하게합니다. 따라서 echo foo > bar.txtbar.txt가 있으면 덮어 쓰지 않습니다. tar와 같은 프로그램이 덮어 쓰는 내용에는 영향을 미치지 않습니다.
KeithB

1
@Felicia : Single Unix에 따르면 tar는 아카이브에없는 파일을 지우지 않습니다. 아카이브의 컨텐츠 (모드는 아님)로 기존 파일을 덮어 씁니다. 호환되지 않는 타르가있을 수 있지만 타르와 같은 관련없는 파일을 덮어 쓰지 않을 것 dir/file1입니다.
Gilles 'SO- 악마 그만'

0

가장 쉬운 방법은 비어있는 새 디렉토리를 만들어 CD에 넣고 파일을 추출하는 것입니다. 추출 된 파일이 상대적 (./로 시작)이고 절대적이 아닌 (/로 시작)주의해야합니다. 알 수없는 경우를 확인하기 위해 목차를 줄입니다 (tar -tvf tar_filename | less)

man 페이지를 보면 tar 버전이 기본적으로 덮어 쓰여 졌는지 확인할 수 있습니다. Tar은 추출 중에 파일을 삭제하지 않습니다. 이는 사람들이 일반적으로 추출을 수행하기 전에 비어있는 새 디렉토리에서 시작하는 또 다른 이유입니다.

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