Debian 8에 연결된 하위 테이프 드라이브(LTO-2 테이프, SCSI 연결)가 있습니다. "세션" 작성이 가능한지 이해가 안 가나요? 그렇다면 어떻게 해야 올바르게 수행되어야 합니까?
내 말은 somedir1
테이프에 한 번 쓰고 일정 시간 후에 somedir2
같은 테이프에 써야 하며, 테이프 장치는 somedir2
테이프에 기록된 데이터에 "연결"되어야 한다는 것입니다. CD/DVD에 다중 세션 쓰기와 같은 것입니다.
왜냐하면 지금은 "세션"을 생성하는 방법을 찾을 수 없기 때문입니다.
내가 쓰는 방법:
mt -f /dev/st0 eod
- 테이프를 데이터 끝으로 설정
tar -czf /dev/st0 /somedir1
- 글쓰기somedir1
mt -f /dev/st0 eod
- 테이프를 데이터의 끝 부분으로 다시 설정합니다(테이프 장치가 되감기 현상 발생).
tar -czf /dev/st0 /somedir2
- 글쓰기somedir2
mt -f /dev/st0 rewind
- 되감기.
그런 다음 데이터를 읽을 때 목록이 아닌 목록 tar -tzf /dev/st0
만 나열됩니다 .somedir2
somedir1
답변1
테이프 백업에 대한 몇 가지 참고 사항. 누군가가 유용하다고 생각할 수도 있습니다 ...
- 쓴 후 되감지 않음 -
/dev/nst0
장치 사용(Linux용) - 쉘 변수 설정
TAPE=/dev/nst0
- 헤드를 테이프의 시작 부분으로 설정합니다.
mt rewind
- 헤드를 테이프에 기록된 데이터 블록의 끝으로 설정합니다.
mt eod
- 현재 테이프 위치 가져오기: 합계 값
mt status
보기File number
block number
- 테이프 헤더를 이전 블록의 시작 부분으로 설정합니다:
mt bsf 2; mt fsf
. 헤드를 테이프 시작 부분으로 설정을 사용하지 마십시오. 되감기를 사용하십시오. tar czv <dir_or_file>
<dir_or_file>
- 테이프 에 쓰기tar tzv
- 테이프(파일 목록)에서 현재 데이터 블록의 내용을 가져옵니다.- 때때로 오류가 발생함 -
mt retension
소프트 오류를 재설정하는 데 사용됨
기본 테이프 작업이 포함된 일부 빠른 bash 스크립트:
#!/bin/bash
export TAPE="/dev/nst0"
############################################
function anykey {
read -n 1 -p "Press any key to continue..."
}
while true; do
clear
cat <<EOF
Choose action:
1. Show tape status
2. Show list of files of current block
3. Write new data (append tape)
4. Rewind tape (Set to BOT)
5. Wind tape (Set to EOD)
6. Set head to N blocks before
7. Set head to N blocks after
8. Extract data from current block
9. Erase tape
0. Exit
-----
EOF
read -p "Select action: " ans
case $ans in
1).
echo "====="; mt status ; echo "====="; anykey ;;
2)
echo "====="; tar tzv; echo "====="
echo "Rewinding to the beginning of current block..."
mt bsf 2; mt fsf
echo "Done"; anykey ;;
3).
read -p "Select file or directory: " path
cd $(dirname $path)
if [ $? -ne 0 ]; then
anykey
continue
fi..
echo "Positioning to the end of written data..."
mt eod; tar czv $(basename $path) -C $(dirname $path)
echo "Done"; anykey ;;
4).
echo "Rewinding tape..."; mt rewind; echo "Done"; anykey ;;
5).
echo "Winding tape..."; mt eod; echo "Done"; anykey ;;
6)
read -p "Enter number of blocks before to set to: " ans
mt bsf $(($ans+1)); mt fsf
echo "Done"; anykey ;;
7)
read -p "Enter number of blocks after to set to: " ans
mt fsf $ans; echo "Done"; anykey ;;
8)
read -p "Enter folder where to extract: " path
cd $path
if [ $? -ne 0 ]; then
anykey
continue
fi
read -p "Extract all data from this block? [Y|n]: " ans
if [ $ans == "n" ]; then
read -p "Enter file or dir name: " ans
tar zxpv $ans
else
tar zxpv
fi
echo "Done"; anykey ;;
9)
echo "WARNING! Erasing will destroy ALL data on tape! Continue? [y|n]"; read ans
if [ $ans == "y" ]; then
echo "Rewinding tape..."; mt rewind;.
echo "Erasing tape. This is quite long operation..."; mt erase; echo "Done"
fi
anykey ;;
0) exit 0 ;;
*) continue ;;
esac
done
답변2
되감기가 아닌 장치가 꺼져 있을 때 되감기를 /dev/nst0
사용해야 합니다 . 현재 작업 흐름에서는 항상 테이프의 시작 부분에 씁니다.../dev/st0
/dev/nst0
테이프 표시를 살펴볼 수도 있습니다( mt
문서 참조).