아카이브에 저장된 파일을 효율적으로 검색하기 위해 더 스마트 한 tar 또는 cpio가 있습니까? (~ 10-15 분). 마찬가지로 cpio -t < file.cpio완료하는

tar매우 큰 (멀티 GB) bz2파일 그룹을 아카이브하는 데 사용 하고 있습니다.

tar -tf file.tar아카이브 내의 파일을 나열하는 데 사용 하는 경우 완료하는 데 시간이 오래 걸립니다 (~ 10-15 분).

마찬가지로 cpio -t < file.cpio완료하는 데 시간이 오래 걸리고 플러스 또는 마이너스 몇 초가 걸립니다.

따라서 ( tar -xf file.tar myFileOfInterest.bz2예를 들어) 아카이브에서 파일을 검색하는 속도가 느립니다.

아카이브에 쉽게 사용할 수있는 “카탈로그”를 유지하여 아카이브 내의 개별 파일을 빠르게 검색 할 수있는 보관 방법이 있습니까?

예를 들어, 아카이브의 특정 바이트에 대한 포인터와 검색 할 파일의 크기 (다른 파일 시스템 별 세부 사항)를 저장하는 일종의 카탈로그입니다.

(또는 인수 도구 있는가 tar또는 cpio아카이브에서 파일의 효율적인 검색을 할 수 있습니다)?



답변

tar (및 cpio 및 afio 및 pax 및 유사한 프로그램)는 스트림 지향 형식입니다. 테이프로 직접 스트리밍되거나 다른 프로세스로 파이프됩니다. 이론적으로는 파일 / 스트림 끝에 색인을 추가하는 것이 가능하지만 어떤 버전도 알지 못합니다 (유용한 향상 일 것입니다)

기존 tar 또는 cpio 아카이브에는 도움이되지 않지만 이러한 색인을 포함하는 아카이브 파일을 작성하고 아카이브 내의 개별 파일에 빠르게 직접 액세스 할 수있는 dar ( “디스크 아카이브”) 도구가 있습니다. .

dar이 unix / linux-dist에 포함되어 있지 않으면 다음에서 찾을 수 있습니다.

http://dar.linux.free.fr/


답변

그러한 보관소에 SquashFS를 사용할 수 있습니다. 그것은

  • 퓨즈 드라이버를 사용하여 액세스 할 수 있도록 설계됨 (전통적인 인터페이스가 존재하더라도)
  • 압축 (블록 크기가 클수록 더 효율적)
  • 리눅스 커널에 포함
  • UID / GID 및 생성 시간 저장
  • 엔디안 인식, 따라서 매우 휴대용

내가 아는 유일한 단점은 읽기 전용이라는 것입니다.

http://squashfs.sourceforge.net/
http://www.tldp.org/HOWTO/SquashFS-HOWTO/whatis.html


답변

인덱스를 저장하지 않지만 star보다 빠릅니다 tar. 또한 긴 파일 이름을 지원하고 파일 속성을 더 잘 지원합니다.

당신이 알고 있듯이, 파일을 압축 해제하는 데 시간이 걸리고 인덱스가 있어도 추출 속도에 영향을 줄 수 있습니다.

편집 :을 살펴볼 수도 있습니다 xar. 아카이브의 파일에 대한 정보가 포함 된 XML 헤더가 있습니다.

참조 페이지에서 :

Xar의 XML 헤더를 사용하면 아카이브 내에 포함 된 파일에 대한 임의의 메타 데이터를 포함 할 수 있습니다. xar는 파일 크기 및 수정 및 생성 시간과 같은 표준 유닉스 파일 메타 데이터 외에도 ext2fs 및 hfs 파일 비트, 유닉스 플래그, 확장 된 속성에 대한 참조, Mac OS X Finder 정보, Mac OS와 같은 정보를 저장할 수 있습니다 X 리소스 포크 및 파일 데이터의 해시.


답변

Thorbjørn Ravn Anderser 가 옳습니다. GNU tar는 기본적으로 “찾을 수있는”아카이브를 만듭니다. 그러나 -n 옵션이 제공되지 않으면 이러한 아카이브를 읽을 때 해당 정보를 사용하지 않습니다. -n 옵션을 사용하면 7GB를 읽고 쓰는 데 필요한 시간에 300GB 아카이브에서 7GB 파일을 추출했습니다. -n이 없으면 시간 이상이 걸리고 결과가 없습니다.

압축이 어떻게 영향을 미치는지 잘 모르겠습니다. 아카이브가 압축되지 않았습니다. 압축 된 아카이브는 현재 (1.26) GNU tar가 압축을 외부 프로그램으로 오프로드하기 때문에 “검색 가능”하지 않습니다.


답변

손상된 인덱스를 두 번 이상 재구성해야했기 때문에 인덱스를 저장하는 유일한 아카이브 형식은 ZIP입니다.


답변

내가 아는 색인은 없지만 큰 파일로 덤프 및 복원을 사용하고 대화 형 모드에서 복원 트리를 탐색하여 임의의 파일을 선택하는 것은 매우 빠릅니다.


답변

p7zip-full패키지에 액세스 할 수있는 경우 7z (7zip) 아카이브 / 압축 형식을 사용할 수 있습니다 .

Ubuntu에서이 명령을 사용하여 설치할 수 있습니다.

$ sudo apt-get install p7zip-full

사용할 수있는 아카이브를 만들고 7z a <archive_name> <file_or_directory>파일을 압축하지 않고 그대로 “저장”하려는 경우 다음 -mx0과 같은 옵션을 사용할 수 있습니다 .

$ 7z a -mx0 myarchive.7z myfile.txt

Creating archive myarchive.7z

그런 다음 다음을 사용하여 파일을 추출 할 수 있습니다 7z e.

$ 7z e myarchive.7z

Processing archive: myarchive.7z
Extracting  myfile.txt

또는 다음과 같이 7z l검색하기 편리한 아카이브의 색인을 나열 할 수 있습니다 grep.

$ 7z l myarchive.7z | grep

2014-07-08 12:13:39 ....A            0            0  myfile.txt

또한 t무결성을 테스트 u하고, 파일을 아카이브에 추가 / 업데이트하고, 파일 d을 삭제하는 옵션입니다.

중요 참고
마십시오 하지 가 포함 된 파일의 소유자와 그룹을 저장하지 않는 리눅스 파일 시스템 백업의 7zip과 형식을 사용합니다.