tar 아카이브를 테이프에 기록하고 개별 파일을 추출합니다.

tar 아카이브를 테이프에 기록하고 개별 파일을 추출합니다.

각 파일의 블록 오프셋을 조회 테이블에 저장하면서 테이프에 tar 아카이브를 쓰고 싶습니다. 그런 다음 아카이브에서 단일 파일을 복구하려는 경우 테이프에서 해당 블록을 찾아 해당 파일을 개별적으로 복구합니다.

tar는 이런 방식으로 파일 복구를 지원합니까? 이는 테이프가 아카이브의 시작 부분에 있지 않은 경우입니다.

압축을 사용하지 않을 것입니다.

tar가 이를 지원하지 않으면 어떻게 이를 수행할 수 있습니까? (아마도 dd를 사용하고 있을까요?)

답변1

tar어디서 도움을 구해야 할지 모르기 때문에 여기서는 도움이 되지 않을 것입니다. 하지만 이미 약 20 SAMFS/QFS년 동안 프로젝트에서 사용되어 온 유사한 솔루션이 있습니다 HSM.

이 솔루션에서는 시작 블록 번호가 별도의 데이터베이스에 보관됩니다.

여기서 문제는 테이프 검색이 512바이트 블록이 아니라 더 큰 테이프 레코드 크기를 기반으로 한다는 것입니다. 따라서 이를 달성하는 유일한 방법은 파일의 테이프 블록 번호를 찾아 mt fsr xxx테이프에서 사용한 다음 모드 tar로 부팅하는 것입니다 ignore checksum errors.

tar이렇게 하면 작동하지만 지정된 파일을 성공적으로 추출한 후에도 종료되지 않고 현재 테이프 파일이 끝날 때까지 기다려야 하기 때문에 문제가 있습니다 .

이 방법을 시도하고 그만한 가치가 있다고 생각되면 star파일을 추출한 후 종료()하도록 옵션을 추가할 수 있습니다.

star모드에서 512바이트 기반 블록 번호를 인쇄하는 옵션 -block-number( 과 함께 )이 이미 있습니다 . 이 숫자를 차단 요소로 나누면(정수 산술을 사용하여 결과를 반올림) 정방향 조회에 필요한 매개변수를 얻을 수 있습니다.-v-cmt fsf

star(in )의 다음 버전은 schilytools다음 주쯤 준비될 예정입니다. 여기에는 새로운 옵션 -one-filéiskip=offset읽은 첫 번째 데이터 블록에서 지정된 양의 데이터를 건너뛸 수 있는 또 다른 옵션이 포함됩니다. 이렇게 하면 해당 옵션을 피할 수 있습니다 -i.

오늘 현재 schilytools-2020-06-09는 star다음 옵션이 추가되어 출시되었습니다.

  • -one-file추출 모드에서 이 옵션을 사용하고 파일이 일치하는 경우 star해당 파일을 처리한 후 종료합니다.

  • iseek=#아카이브 헤더를 찾기 전에 첫 번째 읽기 테이프 블록에서 건너뛸 바이트 오프셋입니다.

  • mtseek=#이는 인쇄된 숫자를 기준으로 한 512바이트 블록 오프셋입니다 star -cv -block-offset .... 아카이브가 일반 파일인 경우 읽기를 시작하기 전에 이 오프셋에서 작업이 수행됩니다 star. lseek()아카이브가 테이프인 경우 star블록 오프셋 매개변수는 테이프 차단 요소로 나누어지고 ioctl()명령이 먼저 실행되어 테이프를 해당 위치로 전달한 다음 나머지는 iseek첫 번째 읽기 블록의 오프셋으로 암시적으로 계산됩니다.

  • 별표를 사용하여 테이프를 전달하는 경우 star -xp mtseek=# -one-file pat=* ...파일을 읽고 파일을 복원한 후 종료합니다.

관련 정보