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
ドキュメントを参照)。