tar 명령-심볼릭 링크 건너 뛰기


13

tar 명령을 다음과 같이 사용합니다.

tar -cvf protTests.tar protTests/*

tar폴더 내의 모든 파일 protTests. 그러나 여기에는 원하는 폴더가 아닌 폴더 안에 기호 링크가 포함되어 있습니다.

모든 심볼릭 링크를 생략하는 명령 행 옵션이 있습니까?

답변:


11

심볼릭 링크 tar파일을 protTests제외한 모든 파일 목록 을 제공하기 위해이 작업을 수행 할 수 있습니다 .

find protTests -maxdepth 1 -mindepth 1 -not -type l -print0 |
  tar --null --files-from - -cvf protTests.tar

그건 그렇고, 기존 명령 :

tar -cvf protTests.tar protTests/*

모든 파일을 protTests보관하지는 않으며, 이름이 시작 .되지 않은 파일 (숨겨지지 않은 파일) 만 보관합니다 . *글로브 연산자는 이름이로 시작하는 파일을 건너 뜁니다 .디자인을. 이 명령에는 protTests파일이 많을 경우 (수천 개 이상) protTests/*너무 많은 인수로 확장하여 명령 줄에 맞출 수 없다는 문제가 있습니다.

이와 같은 간단한 명령은 이러한 문제를 갖지 않습니다.

tar -cvf protTests.tar protTests

1
타르에는 옵션이 없습니다 --files-from. 이것은 gtar의 옵션이므로, 여러분은 그러한 조언을합니다. 찾기에는 기본이 없으며 -not이것은 이식 할 수없는 또 다른 GNUism입니다. 일반적으로 별도의 찾기 호출을 사용하는 것은 좋지 않습니다. 파일 이름에 이상한 문자가 있으면 문제가 될 수 있으며 find와 tar가 파일 시스템을 스캔해야하므로 성능이 저하됩니다. 이러한 문제는 libfind를 사용하고 찾기 코드가 통합 된 star와 같은 프로그램에는 적용되지 않습니다.
schily

다른 일반적인 힌트를 추가하겠습니다. 공급 업체별 UNIX 프로그램 변형에 대한 조언을 제공 할 때 공급 업체를 언급하고 공급 업체별로 특정하는 것이 좋습니다. 일반적으로 소프트웨어의 공식 이름 (예 : tar 대신 gtar, vi 대신 vim)을 사용하여 수행 할 수 있습니다. 이것은 UNIX 관련 정보 플랫폼이므로 일반적인 예에서는 POSIX 표준과 일치해야합니다.
schily

당신은 맞습니다, @schily, 이것은 GNU 전용 솔루션입니다. 귀하의 답변을 기반으로 star하는 것이 좋은 대안이며 그 이유로 그것을 찬성했습니다. 또한 "재미있는 캐릭터"이의 제기에 동의하지만 GNU tar에는 -0옵션 이 없으므로 절충안입니다. 나는 성능 반대에 동의 하지 않는다 . 그것은 실제로이 상황에서 아무런 영향을 미치지 않는다.
Celada

2
@schily, GNU 모두 tarbsdtar--files-from--null(과 결합하면 이상한 문자의 문제를 제거하는 find-print0-exec printf '%s\0' {} +). 그러나 여기서 --no-recursion옵션 을 추가하고 싶을 것입니다 . 일부 pax구현에는 -0옵션이 있습니다.
Stéphane Chazelas

2
@schily이 주석 스레드는 다른 버전의 옹호 장소가 아니라고 생각합니다 tar. 채팅을 하세요 . 이미 너무 길어서 종교 전쟁처럼 읽었습니다. 이 시점에서 OP 차임이 아닌 tar한 사용중인 버전이 중요하지 않다고 생각합니다 . 우리는 그들이 어떤 종류의 유닉스를 사용하고 있는지조차 모릅니다.
Celada

-2

내 tar 구현 이 가장 좋은 방법입니다

star -cv -f out.tar -find protTests ! -type l

8
zsh: command not found: star독자의 99 % 이상이 시스템에없는 유틸리티를 언급 할 때는 어디서 구할 수 있는지 설명하십시오. 또한 자신의 제품을 언급 할 때 (링크 게시 여부에 관계없이 링크를 게시 할 수 있음) 소속을 공개해야합니다 .
Gilles 'SO- 악마 중지'

오늘날의 일반적인 Linux 시스템은 기본 설치 후 많은 중요한 소프트웨어를 그리워하며 동시에 많은 쓸모없는 소프트웨어가 설치됩니다. Linux 사용자는 누락 된 소프트웨어를 설치하는 방법과 tar를 자주 사용하는 사용자는 일반적으로 별표를 설치해야합니다.
schily

8
타르를 자주 사용하는 대다수의 사람들은 별을 제외하고는 팍스에 대해 들어 본 적이 없습니다.
Gilles 'SO- 악마 그만'

"tar"라고 할 때 리눅스에서 gtar를 사용하고 있다는 것을 모르는 사람들은 아마 어쨌든 관심이없는 사람들 일 것입니다. 스타는 가장 오래된 무료 타르 구현이며 다양한 타르 구현에서 볼 수있는 많은 기능이 스타에서 취해 졌으므로 원래에 대해 이야기 해 보지 않겠습니까?
schily
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.