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에 포함되어 있지 않으면 다음에서 찾을 수 있습니다.
답변
그러한 보관소에 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과 형식을 사용합니다.