rsync ผ่าน VPN: ความพยายามครั้งใหม่ที่นำการถ่ายโอนที่แตกหักกลับมาใช้
อุโมงค์ที่ล่มจบการเชื่อมต่อ ไม่ใช่ข้อมูล เก็บชิ้นส่วนด้วย --partial-dir รันสำเนาเดิมอีกครั้ง และตรวจสอบไฟล์ก่อนเผยแพร่
การอัปโหลดของคุณหยุดที่สี่กิกะไบต์ของไฟล์เก็บถาวรสิบสองกิกะไบต์ และนิสัยที่เรียนรู้จากโปรแกรมจัดการดาวน์โหลดบอกให้กดทำต่อ rsync จะไม่ทำต่อสตรีม TCP เพราะสตรีมนั้นหายไปพร้อมกับการส่งซ้ำครั้งสุดท้ายของอุโมงค์ สิ่งที่ทำได้คือเก็บไบต์ที่ได้รับมาแล้วและใช้เป็นฐานสำหรับความพยายามครั้งถัดไป ซึ่งเป็นกลไกอื่นที่มีชุดกฎอีกชุดหนึ่ง แฟล็กที่คุณเลือกเป็นตัวกำหนดว่าการนำกลับมาใช้ใหม่นั้นจะเกิดขึ้นหรือไม่
ความพยายามครั้งใหม่สร้างสถานะขึ้นใหม่ ไม่ได้ทำต่อสตรีม
เมื่อเซสชัน SSH ล่ม ปลายทางจะเหลือเพียงสิ่งที่เขียนลงดิสก์ได้เท่านั้น และไม่มีอย่างอื่น ไม่มีโทเคนเซสชันให้ต่อใหม่และไม่มีหมายเลขลำดับให้เล่นซ้ำ การรันครั้งถัดไปจะเปิดการเชื่อมต่อใหม่ อ่านแหล่งข้อมูลอีกครั้ง และถามผู้รับว่ามีอะไรอยู่แล้ว
คำถามสุดท้ายนั้นคือเหตุผลที่ไฟล์บางส่วนควรค่าแก่การเก็บไว้ สำเนาของผู้รับทำให้ rsync มีอะไรให้เปรียบเทียบ และอัลกอริทึมส่งเฉพาะความแตกต่างที่ระบุได้ ยังเป็นการถ่ายโอนเมทาดาทาครั้งใหม่และการไล่ผ่านแหล่งข้อมูลอีกรอบ เวลาที่ประหยัดได้จึงเป็นสัดส่วนกับส่วนของไฟล์ที่ตรงกัน ไม่ใช่กับระยะที่การเชื่อมต่อก่อนหน้าไปถึง หากผู้รับไม่ได้เก็บอะไรไว้เลย ความพยายามครั้งถัดไปก็คือการคัดลอกทั้งหมด ไม่ว่าครั้งแรกจะย้ายไปกี่กิกะไบต์
ตัดสินใจว่าส่วนที่นำกลับมาใช้ได้นั้นอาศัยอยู่ที่ไหน
พฤติกรรมเริ่มต้นเขียนไฟล์บางส่วนไว้ที่พาธปลายทาง ซึ่งทำให้ไฟล์เก็บถาวรที่เขียนครึ่งเดียวปรากฏใต้ชื่อสุดท้าย --partial-dir ย้ายมันไปยังไดเรกทอรีที่คุณเลือก และคู่มืออธิบายไดเรกทอรีนั้นว่าเก็บไว้เพื่อให้การถ่ายโอนภายหลังใช้เป็นข้อมูล ชื่อแบบสัมพัทธ์จะถูกแก้ภายใต้ไดเรกทอรีปลายทาง ซึ่งเป็นสิ่งที่คุณต้องการเมื่อสองฝั่งอาจมีรูปแบบต่างกัน
rsync -e ssh --partial-dir=.rsync-partial --info=progress2 -- \
large-archive.bin [email protected]:/srv/incoming/
ลำดับก็สำคัญที่ปลายทางเช่นกัน ไดเรกทอรีบางส่วนต้องมีที่พอสำหรับชิ้นส่วน และโวลุ่มต้องมีที่พอสำหรับไฟล์ที่เสร็จแล้วด้วย การเติมโวลุ่มเป้าหมายจนเต็มกลางการถ่ายโอนทำให้เกิดความล้มเหลวที่ดูเหมือนปัญหาของเครือข่ายแต่ไม่ใช่ และอาจทำให้ชิ้นส่วนที่เก็บไว้ถูกตัดขาด ตรวจสอบพื้นที่ว่างบนโฮสต์ผู้รับก่อนเริ่มการรัน ไม่ใช่หลังล้มเหลว ไม่กี่วินาทีกับ df -h บนพาธ SSH เดียวกันคือการทดสอบแผนที่ถูกที่สุดเท่าที่เป็นไปได้
สิทธิ์เป็นเรื่องกังวลที่เล็กกว่าแต่เป็นจริง ไดเรกทอรีบางส่วนที่บัญชีที่ไม่เกี่ยวข้องเขียนได้เปิดทางให้คนอื่นแทนที่เนื้อหาที่การรันครั้งถัดไปของคุณจะถือว่าได้รับแล้ว เก็บไว้ในความเป็นเจ้าของของบัญชีถ่ายโอน และอย่าวางไว้ที่ที่บริการอื่นเผยแพร่
รันสำเนาเดียวกัน ไม่ใช่สำเนาที่ฉลาดกว่า
การนำกลับมาใช้ใหม่ใช้ได้เฉพาะเมื่อแหล่งข้อมูลและปลายทางยังคงอธิบายวัตถุเดียวกัน พาธเดียวกัน ชื่อเดียวกัน ไฟล์เดียวกัน การเปลี่ยนชื่อแหล่งข้อมูลหรือชี้ไปยังไดเรกทอรีปลายทางอื่นจะเริ่มการเปรียบเทียบใหม่กับสิ่งที่ไม่มีประโยชน์
อย่าเพิ่ม --whole-file ขณะที่คาดหวังพฤติกรรมเดลตา ตัวเลือกนั้นบอก rsync ให้คัดลอกทั้งไฟล์โดยไม่มีการเปรียบเทียบเช็กซัมแบบหมุน ซึ่งเป็นทางเลือกที่สมเหตุสมผลบนลิงก์ท้องถิ่นที่เร็วและผิดอย่างยิ่งหลังการอัปโหลดระยะไกลที่ล้มเหลว --inplace ก็เปลี่ยนเรื่องเช่นกัน มันเขียนลงไฟล์ปลายทางโดยตรง การขัดจังหวะจึงทิ้งไฟล์ที่ผสมเนื้อหาเก่าและใหม่โดยไม่มีชิ้นส่วนแยกให้ถอยกลับ
บรรทัดความคืบหน้ารายงานความคืบหน้ารวมของการถ่ายโอน ไม่ใช่สัญญาณเสร็จสิ้น ตัวเลขที่ถึงหนึ่งร้อยเปอร์เซ็นต์ขณะการเชื่อมต่อยังเปิดอยู่หมายความว่าข้อมูลถูกดันออกไปแล้ว ไม่ใช่ว่าผู้รับเปลี่ยนชื่อ ซิงก์ หรือยอมรับอะไร
ยอมรับวัตถุหลังจากที่มันตรงกันแล้วเท่านั้น
ยืนยันสถานะการออกก่อน แล้วเปรียบเทียบผลลัพธ์แทนที่จะไว้วางใจในการไม่มีข้อผิดพลาด การตรวจขนาดจับการถ่ายโอนที่ถูกตัดขาดส่วนใหญ่ การเปรียบเทียบเช็กซัมจับส่วนที่เหลือ และทั้งสองถูกเมื่อเทียบกับการรันการอัปโหลดอีกครั้ง
หากไฟล์เก็บถาวรถูกเผยแพร่โดยกระบวนการปลายน้ำ ให้กระบวนการนั้นรอไฟล์ที่ยอมรับแล้ว ชิ้นส่วนที่เก็บไว้ซึ่งตกลงในไดเรกทอรีที่เฝ้าดูภายใต้ชื่อสุดท้ายจะถูกเก็บโดยการสแกนครั้งถัดไป และข้อผิดพลาดของผู้บริโภคจะเกี่ยวกับอินพุตที่เสียหายไม่ใช่เกี่ยวกับการถ่ายโอนที่ไม่เคยเสร็จ
อย่าแตะต้องแหล่งข้อมูลจนกว่าผู้รับจะยืนยัน การสร้างไฟล์เก็บถาวรใหม่ระหว่างความพยายามเปลี่ยนฐานการเปรียบเทียบ และการรันครั้งถัดไปจะถ่ายโอนเกือบทั้งหมดหรือสร้างไฟล์ที่ไม่ตรงกับแหล่งข้อมูลเก่าหรือใหม่
เมื่อข้อจำกัดคือลิงก์ ไม่ใช่แฟล็ก
โอเวอร์เฮดของเฮดเดอร์และโปรโตคอลเป็นต้นทุนหนึ่งของการถ่ายโอน และแทบไม่ใช่ตัวที่กำหนดว่าไฟล์ขนาดใหญ่ใช้เวลานานเท่าใด พฤติกรรมการเริ่มใหม่สำคัญกว่า วิธีที่รอดจากการตัดโดยไม่มีขั้นตอนด้วยมือให้ไฟล์ที่ใช้ได้เร็วกว่าวิธีที่เร็วกว่าซึ่งต้องเริ่มใหม่ การจัดเก็บบนสองฝั่งและพาธการพิสูจน์ตัวตนอยู่ในการเปรียบเทียบเดียวกัน
เปรียบเทียบพาธทางเลือกที่ได้รับอนุญาตด้วยไฟล์เดียวกันและปลายทางเดียวกัน และบันทึกว่าแต่ละอันเริ่มใหม่จากตรงไหนหลังการขัดจังหวะ คอลัมน์เดียวนั้นบอกคุณเกี่ยวกับการอัปโหลดสิบสองกิกะไบต์ผ่าน VPN ได้มากกว่าอัตราสูงสุดใดๆ ที่วัดในการทดสอบสั้นๆ