나는 항상 GNU를 사용해왔습니다 tar
. 그러나 내가 본 모든 GNU/Linux 배포판은 bsdtar
저장소에서 이를 제공합니다. 일부 IIRC에서는 기본적으로 설치되는 경우도 보았습니다. 나는 PKGBUILD에서 본 것처럼 Arch GNU/Linux가 basedevel
(어쩌면 base
, 확실하지는 않지만) 의 일부로 그것을 요구한다고 확신합니다 .
bsdtar
대신 왜 GNU를 사용하고 싶나요 tar
? 장점은 무엇입니까?
제가 질문자라는 점 참고해주세요BSD와 GNU/Linux 사용자 공간의 주요 차이점은 무엇입니까?.
답변1
Ubuntu는 실제로 bsdtar
tar 구현과 함께 번들로 제공됩니다. libarchive
이것은 고전적인 것과는 달라야 합니다 bsdtar
. 일부 BSD 변형은 libarchive
FreeBSD와 같은 tar 구현을 사용합니다 .
GNUtar
실제로 지원됨다른 tar 변종자동 압축 감지.
~처럼시각화하다붙여넣은 내용은 특정 내용이 포함된 Ubuntu에 대한 소개입니다 libarchive
.
libarchive
bsdtar
정의에 따르면 이는 기존 라이브러리 와는 달리 라이브러리입니다GNUtar
.libarchive
일부 오래된 잘 알려지지 않은 GNU tar 변형은 읽을 수 없습니다. 특히 일부 헤더는 base64로 인코딩되므로 tar 파일은 7비트 순수 ASCII가 됩니다(이는 1.13.6-1.13.11의 경우이고 1.13에서 변경되었습니다. .12, 코드는 2주 동안만 tar로 공식 출시되었습니다.)libarchive
은bsdtar
tar가 아닌 파일(예: zip, iso9660, cpio)을 읽지만 클래식 bsdtar는 읽지 않습니다.
이제 libarchive
그 문제를 해결했으므로 대부분 Classic에서 지원되는 내용으로 귀결됩니다 bsdtar
.
여기에서 맨페이지를 볼 수 있습니다.
- GNU 타르(1)
- FreeBSD 타르(1)- libarchive 기반
- NetBSD 타르(1)
- OpenBSD 타르(1)
- 표준/힐리 타르(1)- 다른 상속이 없는 가장 오래된 무료 tar 구현
- 비지박스(1)- 임베디드 시스템에서 매우 일반적인 BusyBox의 미니 타르 구현
원래 질문에서 classic 의 장점이 무엇인지 물으셨는데 bsdtar
실제로 그런 장점이 있는지 잘 모르겠습니다. 정말로 중요한 것은 모든 시스템에서 실행되어야 하는 쉘 스크립트를 작성하려는 경우 전달한 내용이 tar
모든 변형에서 실제로 유효한지 확인해야 한다는 것입니다.
GNUtar
, libarchive
' bsdtar
, classic bsdtar
및 ' 는 물론 대부분의 경우 접하게 될 tar 구현이지만 (초기 QNX와 같은) 다른 구현도 있을 것이라고 확신합니다 star
. // 기능이 가장 풍부하지만 여러 면에서 원래 표준에서 벗어난 지 오래되었습니다(아마도 더 나은 방향으로).BusyBox
tar
libarchive
GNUtar
star
답변2
BSDTAR 대 TAR 등
또 다른 혜택이 있습니다! !
여기서는 5가지 주제를 다룰 것입니다(주제와 다르지만 원하는 내용도 다룰 것입니다).
- bsdtar 및 tar
- 스파스 파일과 비스파스 파일
- btrfs를 사용하는 씩(thick) 파일 및 씬(thin) 파일/lun
- btrfs가 없는 씩(thick) 파일 및 씬(thin) 파일/lun
- 두꺼운 것과 얇은 것의 차이점과 그것이 룬에만 적용되지 않는 이유
bsdtar일반 파일보다 희소 파일을 더 잘 처리합니다.아스팔트
- bsdtar는 모두 0을 얻고 메타데이터만 가져옵니다.
- tar는 실제로 각 0을 처리합니다.
*예: 전체 20테라바이트 스파스 파일(biglun)에 10MB의 데이터가 포함된 20테라바이트 스파스 파일(biglun이라고 함)을 상상해 보십시오... 이제 이것은 스파스 파일이므로 드라이브에서 10MB만 차지합니다.
스파스 파일을 만드는 방법:
스파스 파일 - 만드는 방법 - 감지 - 모든 것 스파스 파일은 "씬" lun과 같습니다(lun으로 사용하는 경우). "두꺼운"Lunzi는 다릅니다.
*주제로 돌아가기:
biglun의 용량을 높이면 tar가 10MB를 모두 통과하게 되고 ~20tb의 더 나쁜 0이 lun 전체에 흩어져 있게 됩니다. 이 작업에는 시간이 좀 걸리고 tar 파일이 꽤 커질 것입니다. 또한 - 추출 중 - 스파스 파일의 tar 파일을 추출한 적이 없지만 여기서는 틀릴 수도 있습니다.
bsdtarring biglun은 10MB의 데이터만 처리하고 약 20TB의 0에 대한 작은 메타데이터를 생성합니다.
혜택? 글쎄, 나는 위에서 몇 가지를 썼습니다.
rsync 및 cp와 유사합니다.
- 또한 거대한 희소 파일을 rsync하면 tar처럼 동작합니다.
- 거대한 파일을 cp로 처리하면 자동으로 bsdtar처럼 동작합니다(0을 덮어쓰도록 cp의 ss 동작을 변경할 수 있음).
개인적으로 나는 희소 파일(예: 얇은 LUN)과 일반 파일(예: 두꺼운 LUN)을 상상하고 싶습니다.
다음 주제는BTRFSThin Lun 및 Thick Lun:
이와 같은 파일 시스템의 경우BTRFS, 씬 LUN은 희소 파일입니다(Wiki 문서에 표시된 대로 잘림을 사용하여 처리됨).
truncate -s <size in kilobytes> filename
힌트:백업과bsdtar, 다음으로 복사CP
일반 LUN은 +C 속성이 있는 일반 파일입니다(+C를 사용하면 COW가 아닌 쓰기 시 복사가 가능하므로 모든 쓰기가 기본적으로 할당된 위치에 유지되고 덮어쓰기가 존재할 때 파일에 새 쓰기가 발생하지 않습니다. 입력 또는 삭제 - 연구젖소그리고BTRFS). 잘림으로 파일을 만드는 대신 "fallocate -l"을 사용하여 파일을 만듭니다.
fallocate -l <size in kilobytes> filename chattr +C filename
힌트:bsdtar 또는 tar를 사용하여 백업하고 rsync 또는 cp를 사용하여 복사
다음 주제는 EXT 가상 LUN 및 일반 LUN입니다.
스파스 보룬
truncate -s <size in kilobytes> filename
힌트:백업과bsdtar, 다음으로 복사CP
일반 LUN은 +C 속성이 있는 일반 파일입니다(+C를 사용하면 COW가 아닌 쓰기 시 복사가 가능하므로 모든 쓰기는 기본적으로 할당된 위치에 유지되며 덮어쓰기 쓰기 또는 삭제 시 파일에 새 쓰기 작업이 발생하지 않습니다). - 연구젖소그리고BTRFS). 잘림으로 파일을 만드는 대신 "fallocate -l"을 사용하여 파일을 만듭니다.
touch filename fallocate -l <size in kilobytes> filename
힌트:bsdtar 또는 tar를 사용하여 백업하고 rsync 또는 cp를 사용하여 복사
두꺼운 파일과 얇은 파일이란 무엇입니까?
- 일반 LUN/파일의 데이터는 0에서 할당된 크기까지 채워지며 메타데이터는 0이 있는 것처럼 가장합니다. 데이터를 채우면 데이터가 채워집니다.
- Thick luns/files: 시작 부분에 0 또는 다른 값으로 데이터를 채웁니다(lazy zero 또는eager zero). 이러한 설정은 보존됩니다(또는 ZFS는 refreservation 호출을 좋아합니다).
VMWARE 문서에서는 다음에서 일반 LUN/파일의 지연 제로화 및 즉시 제로화에 대해 설명합니다.https://communities.vmware.com/message/2199576
힌트
굵은 것과 얇은 것은 lun에만 적용되는 것이 아니라 파일, zfs 파일 시스템(공유/볼륨/luns) 및 기타 사항에도 적용될 수 있다는 것을 기억하십시오(zfs만 살펴보십시오).
답변3
~에서우분투 패키지 설명:
bsdtar 프로그램은 이전 tar 구현에 비해 많은 장점을 가지고 있습니다:
- 도서관. 핵심 기능은 라이브러리에 있으므로 pkg_add와 같은 다른 도구에서 사용할 수 있습니다.
- 자동 형식 감지. Libarchive는 아카이브를 읽을 때 압축(none/gzip/bzip2) 및 형식(old tar, ustar, gnutar, pax, cpio, iso9660, zip)을 자동으로 감지합니다. 모든 데이터 소스에 대해 이 작업을 수행합니다.
- Pax 교환 형식을 지원합니다. 이는 각 항목에 임의의 확장 속성을 추가하는 이전 "ustar" tar 형식에 대한 POSIX/SUSv3 확장입니다. GNU tar 형식의 모든 기능을 제공하지만 더 좋습니다.
- 파일 플래그, ACL, 임의 경로 이름 등을 처리합니다. Pax 교환 형식은 쉽게 확장 가능한 기술을 사용하여 키/값 속성을 지원합니다. 임의의 경로 이름, 그룹 이름, 사용자 이름 및 파일 크기는 모두 POSIX 표준의 일부입니다. libarchive는 이를 확장하여 파일 플래그, ACL 및 임의 장치 번호를 지원합니다.
- GNU 타르 지원. Libarchive는 대부분의 GNU tar 아카이브를 읽습니다. 필요한 경우 추가 개선이 이루어질 수 있습니다.
답변4
@archive
bsdtar는 다음 구문을 사용하여 다른 아카이브에서 멤버를 읽고 tar할 수 있습니다.GNU tar에는 이
--delete
옵션이 있습니다. 비록 최근에 이것이 아카이브를 손상시킬 수 있다는 것을 발견했지만요.