Linux에서 테이프를 읽고 쓰는 간단한 도구

Linux에서 테이프를 읽고 쓰는 간단한 도구

테이프 드라이브가 몇 개 있고 데이터를 테이프에 백업하기로 결정했습니다(이유 중 하나는 내 데이터의 대부분이 변경되지 않기 때문입니다. 따라서 전체 백업을 수행하면 테이프를 오랫동안 선반에 놓아두었다가 보관하는 것이 더 좋습니다). 잠시 동안 하드 드라이브보다 조금 더 짧게 작업할 수 있는 기회).

저는 이러한 백업을 위해 자체 데이터베이스가 있는 bacula와 같은 복잡한 소프트웨어보다는 간단한 Linux 도구를 사용하고 싶습니다. 내 사용 사례는 약간 다르므로 이 작업을 수행하려면 스크립트를 직접 작성하고 싶습니다.

tar 및 cpio가 이 작업에 유용합니다. 그러나 형식으로 인해 파일을 나열하려면 전체 테이프를 읽어야 하며(몇 시간이 걸릴 수 있음), 테이프 끝에 있는 단일 파일을 복구하려면 전체 테이프를 다시 읽어야 합니다.

LTO 테이프가 기록되는 방식(테이프에 여러 번 쓰기)으로 인해 테이프 시작 부분부터 모든 데이터를 읽지 않고도 아카이브 끝에 있는 파일을 비교적 빠르게 찾을 수 있습니다.

예를 들어, 다음 파일 마크를 얻기 위해 mt를 사용하는 것은 파일 목록을 생성하기 위해 아카이브를 tar 스캔하거나 아카이브 끝에서 1KB 파일을 복구하는 것보다 훨씬 적은 시간이 소요됩니다.

또한 테이프의 시작 부분에 "목차"를 넣어 테이프에 어떤 파일이 있고 어디에 있는지 알 수 있어야 합니다.

BackupExec과 같은 소프트웨어가 이를 수행할 수 있습니다. 테이프를 "카탈로그"하는 데는 짧은 시간이 걸리고 테이프 끝에서 파일을 복원하는 데는 짧은 시간이 걸립니다.

디렉토리에서 ls(또는 find)를 실행하고 출력을 테이프에 쓴 다음 디렉토리를 테이프에 tar할 수 있습니다. 이렇게 하면 목록 문제가 해결되지만 tar는 마지막 파일을 복구하는 데 여전히 오랜 시간이 걸립니다.

tar와 유사하지만 아카이브 시작 부분에 파일 목록을 생성하고 파일 복구를 검색할 수 있는 간단한 도구가 있습니까?

답변1

마음대로 테이프를 건너뛸 수 있다면 어쨌든 콘텐츠 목록을 앞에 두는 데 큰 이점이 없다고 생각합니다.

특정 파일의 검색 시간을 향상시키기 위해 각 테이프에 더 작은 tar 아카이브를 추가합니다. 테이프당 20개의 아카이브 하위 파일이 있으면 균형이 적절할 것입니다.

나는 디스크의 각 테이프에 대한 디렉토리를 유지합니다. 각 tar 파일에 대해 tar -tvf가 있는 각 테이프의 하위 디렉토리는 다음과 같습니다.

tar_yyyymmdd_hhmmss_LTO_nnnnn_sub_vv.toc

이는 콘텐츠 목록을 얻기 위해 어떤 테이프를 로드해야 하는지 알 필요 없이 전체 컬렉션에 대한 온라인 검색 기능을 제공합니다.

더 이상 추가할 계획이 없으면 특정 디렉터리를 자체 테이프 끝에 보관하고 정기적으로 모든 디렉터리를 별도의 테이프에 보관합니다. 카탈로그를 자체 테이프에 여러 번 보관해도 문제가 되지 않습니다. 미디어 끝으로 이동한 다음 다시 1로 이동하여 언제든지 마지막 버전을 찾을 수 있습니다.

답변2

우리는 단일 테이프에 여러 개의 tar 아카이브를 저장하기 위해 Solaris에서 QIC 테이프를 사용했습니다.

물리적 테이프를 관리하려면 mt(1) 명령을 사용하십시오. 특히 이를 통해 절대 또는 상대 번호 매기기를 사용하여 앞뒤 간격에 테이프 마커를 사용할 수 있습니다. 혼란스럽게도 이 용어는 "파일"을 사용하여 테이프 표시로 구분된 여러 하위 파일을 나타냅니다. 완전한 tar 아카이브는 하나의 "파일"에 해당합니다.

mt 명령에는 Linux Mint 18.1에 바이너리와 매뉴얼 페이지가 있습니다. 테이프는 매우 비표준입니다. 일부 유형의 테이프에는 모든 명령이 포함되어 있지 않지만 테이프 표시는 매우 기본적입니다.

표준 테이프 장치는 기본적으로 사용 전후에 되감기 기능을 수행하므로 사전 위치 지정이 모두 취소되는 경우가 많습니다. 일반적으로 각 캐러셀에는 /dev/rmt0과 같은 지정자와 /dev/nrmt0과 같은 동일한 물리적 장치에 대한 추가 장치가 있습니다. 여기서 n은 "되감기 없음"을 의미합니다.

따라서 다음을 수행하는 스크립트에 추가 tar 명령을 포함시킵니다.

mt -f /dev/nrmt0 rewind
mt -f /dev/nrmt0 eod
tar -f /dev/nrmt0 ...
mt -f /dev/rmt0 offline

어떤 아카이브가 어떤 테이프에 있고 어떤 하위 파일에 있는지 디렉터리를 유지해야 하며 검색 결과는 다음과 같습니다.

mt -f /dev/nrmt0 rewind
mt -f /dev/nrmt0 fsf 17
tar -f /dev/nrmt0 ...

아카이브를 더 작은 여러 부분으로 나누고 그 사이를 이동하는 것은 적은 수의 파일을 검색하는 데 중요한 최적화입니다.

관련 정보