bsdtar와 GNU tar의 차이점은 무엇입니까?


46

나는 항상 GNU를 사용했다 tar. 그러나 내가 본 모든 GNU / Linux 배포판 bsdtar은 그들의 저장소에 들어 있습니다. IIRC에 기본적으로 설치되어있는 것을 보았습니다. 필자 는 PKGBUILD에서 보았 듯이 Arch GNU / Linux가 basedevel(아마도 base확실하지는 않지만) 일부로 필요하다는 것을 알고 있습니다.

bsdtarGNU 대신에 사용하고 싶 tar습니까? 장점은 무엇입니까?

내가 질문 한 사람임을 참고 BSD와 GNU / 리눅스 유저 랜드의 주요 차이점은 무엇입니까? .


답변:


29

우분투 bsdtar는 실제로 tar와 함께 제공되는 tar 구현입니다 libarchive. 그것은 고전과 차별화되어야합니다 bsdtar. 일부 BSD 변형은 libarchiveTar 구현에 사용됩니다 (예 : FreeBSD).

GNUtar다른 tar 변형 및 자동 압축 감지를 지원합니다 .

으로 visualication는 우분투에서 추천 광고를 붙여, 특정을 거기에 몇 가지가있다 libarchive:

  1. libarchive정의상 라이브러리이며, 고전적인면 bsdtar과 다른면에서 다릅니다 GNUtar.
  2. libarchive 오래된 오래된 GNU tar 변형을 읽을 수 없으며 base64의 일부 헤더를 인코딩하여 tar 파일이 7 비트 깨끗한 ASCII가되도록했습니다 (1.13.6-1.13.11의 경우 1.13.12에서 변경됨) , 그 코드는 공식적으로 2 주 동안 타르에만 있었다)
  3. libarchive의는 bsdtar(예, ISO9660, CPIO 지퍼) 비 타르 파일을 읽을 것이다, 그러나 고전 bsdtar은하지 않습니다.

이제 우리는 그 libarchive길 을 벗어 났으 므로, 그것은 대부분 고전적으로 지원되는 것입니다 bsdtar.

맨 페이지를 여기에서 직접 확인할 수 있습니다.

원래 질문에서, 당신은 classic의 장점이 무엇인지 물었고 bsdtar실제로 어떤 것이 있는지 잘 모르겠습니다. 실제로 중요한 것은 모든 시스템에서 작동해야하는 쉘 스크립트를 작성하려는 경우입니다. 전달하는 tar것이 실제로 모든 변형에서 유효한지 확인해야합니다 .

GNUtar, libarchive의는 bsdtar, 클래식 bsdtar, star그리고 BusyBox의는 tar확실히 당신이 대부분의 시간에 실행하는거야 타르 구현,하지만 난 다른 사람이 (조기 QNX 예를 들어)에서있다 확신합니다. libarchive/ GNUtar/이 star가장 특징 포장하지만, 여러 가지면에서 그들은 긴 (아마도 더 나은) 원래 표준에서 이탈했다.


15

BSDTAR vs TAR 및 훨씬 더

여기에 한 가지 장점이 있습니다!

여기서 5 가지 주제로 넘어가겠습니다 (주제를 벗어나지 만 원하는 내용도 다룰 것입니다).

  1. bsdtar 대 타르
  2. 스파 스 파일 vs
  3. btrfs가있는 두껍고 얇은 파일 / 양
  4. btrfs가없는 두껍고 얇은 파일 / 양
  5. 두껍고 얇은 것 사이의 차이와 그것이 단지 luns에 적용되지 않는 방법

bsdtar 는 일반 타르 보다 스파 스 파일을 더 잘 처리합니다.

  • bsdtar는 모두 0을 취하고 메타 데이터 만 가져옵니다.
  • tar는 실제로 모든 0을 처리합니다

* 예 : 20 tb sparsefile (biglun) 전체에 10 megs의 데이터가있는 20 tb sparse 파일 (biglun이라고 함)을 상상해보십시오.이 파일은 스파 스 파일이므로 드라이브에서 10 megs 만 차지합니다.

스파 스 파일을 만드는 방법 :

스파 스 파일-파일을 만드는 방법-감지-모든 스파 스 파일은 "얇은"luns와 같습니다 (lun에 사용하는 경우). "두꺼운"luns는 다른 이야기 일 것입니다.

* 주제로 돌아 가기 :

  • biglun을 taring하면 tar가 10 ~ 20tb의 모든 0과 함께 lun을 가로 질러 가로 질러 퍼지게됩니다. 내가 추정하는 데 시간이 걸리고 tar 파일은 꽤 큽니다. 또한-추출 중-나는 희소 파일의 tar 파일을 추출한 적이 없지만 꽤 좋지는 않습니다. 나는 여기에 잘못되었을 수 있습니다.

  • biglun을 bsdtarring하면 10 megs의 데이터 만 처리하고 ~ 20tb의 0에 대해 작은 메타 데이터를 만듭니다.

이익? 그들 중 많은 사람들; 방금 위의 내용을 썼습니다.

rsync vs cp와 비슷합니다.

  • 또한 거대한 스파 스 파일을 재 동기화하면 tar처럼 동작합니다.
  • 거대한 파일을 cp로 만들면 bsdtar와 같이 자동으로 작동합니다 (cp의 동작을 0으로 넘어가거나 0으로 넘어 가지 않도록 변경할 수 있음)

개인적으로, 나는 얇은 luns와 같은 희소 파일과 두꺼운 luns와 같은 일반 파일을 상상하고 싶습니다 ...

다음 주제는 BTRFS 씬 대 굵은 수두입니다 .

  • BTRFS 와 같은 파일 시스템을 사용하면 얇은 luns는 드문 파일입니다 (wiki doc에서와 같이 잘라서 사용하십시오).

     truncate -s <size in kilobytes> filename
    

    팁 : bsdtar로 백업 , cp로 복사

  • 두꺼운 luns는 + C 속성이있는 일반 파일 (+ C이므로 COW, 복사시 복사가되지 않으므로 모든 쓰기는 기본적으로 할당 된 위치에 고정되며 덮어 쓰기가있을 때 해당 파일에 대한 새로운 쓰기는 발생하지 않습니다) 또는 삭제-연구 COWBTRFS ). 잘라내기로 파일을 만드는 대신 "fallocate -l"로 파일을 만드십시오.

    fallocate -l <size in kilobytes> filename
    chattr +C filename
    

    팁 : bsdtar 또는 tar로 백업, rsync 또는 cp로 복사

다음 주제는 EXT 얇은 두께와 두꺼운 두께입니다.

  • 드문 드문 luns

    truncate -s <size in kilobytes> filename
    

    팁 : bsdtar로 백업 , cp로 복사

  • 두꺼운 luns는 + C 속성이있는 일반 파일 (+ C이므로 COW, 복사시 복사가되지 않도록하여 모든 쓰기가 할당 된 위치를 고수하고 덮어 쓰기가있을 때 해당 파일에 대해 새로운 쓰기가 발생하지 않도록 함) 또는 삭제-연구 COWBTRFS ). 잘라내기로 파일을 만드는 대신 "fallocate -l"로 파일을 만드십시오.

    touch filename
    fallocate -l <size in kilobytes> filename
    

    팁 : bsdtar 또는 tar로 백업, rsync 또는 cp로 복사

두꺼운 파일과 얇은 파일

  • 두꺼운 luns / 파일의 경우 0에서 할당 된 크기까지 데이터를 채우고 메타 데이터는 0이있는 척합니다. 데이터를 채우면 데이터가 채워집니다
  • 두꺼운 luns / files : 시작시 0 또는 그 밖의 어떤 것 (lazy zero 또는 eeager zero)으로 데이터를 채운다-이 세트 예약 (또는 ZFS가 refreservation을 호출하는 것처럼)

여기서 VMWARE ARTICLE은 두꺼운 luns / files로 게으른 vs 열망하는 제로를 설명합니다 : https://communities.vmware.com/message/2199576

두껍고 얇은 것은 단지 luns에만 적용되는 것이 아니라 파일, zfs 파일 시스템 (shares / volumes / luns)에도있을 수 있으며 다른 것들은 확실합니다 (zfs 만보십시오).


1
훌륭하고 철저합니다. 사이트에 오신 것을 환영합니다 ...
eyoung100

1
타르와 함께 스파 스 : -S를 대부분의 타르 구현으로 전달하면, 오랫동안 지원해 왔습니다. -rsync로 스파 스 : 다시 --sparse를 전달하면 작동합니다. 희소 한 탐지를 사용하는 것의 단점은 도구가 실제로 블록을 더 많이 읽어야한다는 것입니다. 이로 인해 많은 CPU가 발생할 수 있습니다 (제로 / 제로가 아닌 번갈아 번갈아 가면).
robbat2

gsn tar가 스파 스 플래그를 지원하더라도 bsdtar를 사용하는 것이 좋습니다. bsdtar는 스파 스 홀을 처리하지 않고 건너 뛰는 방법을 알고 있기 때문에 (예 : 데이터가 1k 인 1TB 스파 스 파일이있는 경우 bsdtar는 Gnu tar는 1TB를 처리합니다
moveaway00

13

우분투 패키지 설명에서 ( http://packages.ubuntu.com/de/lucid/bsdtar )

"bsdtar 프로그램은 이전 tar 구현에 비해 여러 가지 장점이 있습니다.

  • 도서관. 핵심 기능은 라이브러리에 있으므로 pkg_add와 같은 다른 도구에서 사용할 수 있습니다.
  • 자동 형식 감지. Libarchive는 아카이브를 읽을 때 압축 (없음 / gzip / bzip2) 및 형식 (이전 tar, ustar, gnutar, pax, cpio, iso9660, zip)을 자동으로 감지합니다. 모든 데이터 소스에 대해이 작업을 수행합니다.
  • Pax 교환 형식 지원. 이것은 각 항목에 임의의 확장 된 속성을 추가하는 이전 "ustar"tar 형식에 대한 POSIX / SUSv3 확장입니다. GNU tar 형식의 모든 기능이 더 좋습니다.
  • 파일 플래그, ACL, 임의의 경로 이름 등을 처리합니다. Pax 교환 형식은 쉽게 확장 가능한 기술을 사용하여 키 / 값 속성을 지원합니다. 임의의 경로 이름, 그룹 이름, 사용자 이름, 파일 크기는 POSIX 표준의 일부입니다. libarchive는 파일 플래그, ACL 및 임의의 장치 번호를 지원하여이를 확장합니다.
  • GNU 타르 지원. Libarchive는 대부분의 GNU tar 아카이브를 읽습니다. 수요가 있다면 더 개선 될 수 있습니다. "

1

다음은 경험이 아닌 독서를 기반으로합니다 .Freebsd로 시작하여 거의 경험이 거의 없습니다 (주로 Linux에서 나옵니다). 중요한 것을 놓친 점에 대해 사과하고 겸손하게 간청합니다. 여기서 말하는 것은 쓰레기입니다 ...

매뉴얼 페이지 (가장 최근에 http://www.freebsd.org/cgi/man.cgi?query=tar&sektion=1 참조 )를 읽은 결과 Freebsd tar에는 (-d, --diff ,-비교) 기능. Freebsd 덤프 / 복원 작성자가 이와 같은 것을 제공하지 않은 것 같으므로 놀라운 것은 아닙니다.

Freebsd tar가 말했듯이 Gnu tar가 모든 UFS 메타 데이터를 통합할지 여부는 확실하지 않으며 이는 중요한 문제입니다. 그러나 필자의 취향에 따라 출력 파일의 MD5 합계를 저장할 때까지 덤프가 완료된 것으로 간주 할 수 없으며 덤프 파일을 방금 덤프 한 데이터와 비교했습니다. 다양한 문제로 인해 덤프 된 데이터가 디스크에있는 것과 다를 수 있습니다. (파일 변경뿐만 아니라 디스크 오류, 메모리 오류, 시스템 오류 등이 실제로 발생했습니다.)

내 생각에 이것은 Gnu tar가 Stock Freebsd 시스템에서 진정한 백업을 만들기 위해 지금까지 찾은 유일한 옵션입니다.

다른 방법으로 배우기를 정말 좋아합니다, FWIW. 최소한 파티션 복제 및 하드 복구 백업에는 기본 유틸리티를 사용하고 싶습니다. 그러나 덤프의 정확성을 확인할 수 없다면 덤프를 생성하는 데 귀찮은 요점이 없습니다.


1
  • bsdtar는 @archive구문을 사용하여 다른 아카이브에서 오는 구성원을 읽고 tar 할 수 있습니다.

  • GNU tar에는 --delete옵션 이 있습니다. 최근에는 아카이브가 손상 될 수 있음을 발견했습니다.

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