ในฐานะส่วนหนึ่งของระบบสำรองข้อมูล เราจำลองชุดข้อมูล zfs จากระบบ TrueNAS ไปยังเซิร์ฟเวอร์สำรองข้อมูล 2-3 เครื่อง ซึ่งเครื่องหนึ่งกำลังรัน TrueNAS Scale และเชื่อมต่อเทปไดร์ฟ LTO-5 บางครั้งเราเขียนเนื้อหาสแน็ปช็อตแบบอ่านอย่างเดียวลงในเทป เนื่องจากชุดข้อมูลเหล่านี้บางส่วนมีขนาดใหญ่ tar จึงใช้กับแฟล็ก --multi-volume
ก่อนการสำรองข้อมูล sha256sums จะถูกสร้างขึ้นสำหรับทุกไฟล์ในไดเร็กทอรีสแน็ปช็อต สำเนาของไฟล์นี้จะถูกเก็บไว้บนเซิร์ฟเวอร์และเขียนลงเทปด้วย
หลังจากนี้ เนื้อหาทั้งหมดของสแน็ปช็อตจะถูกเขียนลงเทปโดยใช้
tar --acls --xattrs --spares --label="SomeLabel" --multi-volume -cvpf /dev/nst0 *
สิ่งนี้ช่วยเราได้ดี อย่างไรก็ตาม ฉันต้องการตรวจสอบข้อมูลหลังจากเขียนลงเทปแล้ว ฉันต้องการหลีกเลี่ยงการแยกชุดข้อมูลทั้งหมดของไฟล์ไปยังตำแหน่งเริ่มต้น ซึ่งอาจทำให้เรียกใช้ "sha256sum -c" ได้ เนื่องจากเซิร์ฟเวอร์สเกล TrueNAS ไม่มีพื้นที่เพิ่มเติมเพียงพอสำหรับชุดข้อมูลบางชุดที่จะแยกออกมา แต่ฉันพยายาม:-
tar --multi-volume -xf /dev/nst0 --to-command=tar-shasums.sh | ที ตรวจสอบ datasetname.sha25sum
โดยที่ tar-shasums.sh อยู่ในบรรทัดเหล่านี้:
#!/bin/bash
sha1=`sha1sum`
เสียงสะท้อน -n $sha1 | sed 's/ .*$//'
เสียงสะท้อน " $TAR_FILENAME"
ฉันพบปัญหา แต่ถ้าน้ำมันดินครอบคลุมสองเทป เมื่อ tar อยู่ระหว่างการอ่านไฟล์ที่ขยายเทปสองเทป มันจะขอให้ใส่โวลุ่มถัดไปและกด Enter อย่างไรก็ตาม ข้อผิดพลาดนี้จะเกิดขึ้นเนื่องจากอุปกรณ์ถูกใช้งานอยู่
ดูเหมือนว่า "--to-command" ยังคงทำงานอยู่สำหรับไฟล์นั้น เนื่องจากยังไม่ได้รับข้อมูลทั้งหมดเพื่อสร้าง shasum แต่ยังไม่สามารถเสร็จสิ้นได้จนกว่าจะเปลี่ยนเทป แต่จะไม่สามารถเปลี่ยนเทปได้จนกว่า มันจบแล้ว...
ขณะนี้ฉันฆ่ากระบวนการ shasum ซึ่งอนุญาตให้ tar ดำเนินการต่อกับเทปถัดไป แต่หมายความว่าไม่สามารถตรวจสอบไฟล์หนึ่งไฟล์ที่ครอบคลุมสองวอลุ่มได้เว้นแต่ไฟล์นั้นจะถูกแยกและตรวจสอบด้วยตนเอง ไม่เหมาะ
ฉันคาดว่าจะไม่ แต่มีวิธีแก้ไขหรือไม่? มีวิธีใดบ้างในการสร้าง shasums ที่ไม่เกี่ยวข้องกับการแยก tar ทั้งหมดไปยังดิสก์ก่อน หรือมีวิธีใดที่จะปลดล็อค /dev/nst0 เพื่อให้ tar อ่านต่อจากเทปที่ใส่ใหม่โดยไม่ต้องฆ่า shas256sum