นี่คือข้อมูลจาก man page สำหรับ rsync เกี่ยวกับโหมดแบทช์
โหมดแบทช์
สามารถใช้โหมดแบทช์เพื่อใช้ชุดการอัปเดตชุดเดียวกันกับระบบที่เหมือนกันหลายระบบ สมมติว่ามีต้นไม้ที่มีการจำลองแบบจำนวนโฮสต์ ทีนี้สมมติว่ามีการเปลี่ยนแปลงบางอย่างกับแผนผังต้นกำเนิดนี้และการเปลี่ยนแปลงเหล่านั้นจำเป็นต้องแพร่กระจายไปยังโฮสต์อื่น ๆ ในการทำเช่นนี้โดยใช้โหมดแบตช์ rsync จะถูกรันด้วยตัวเลือกชุดการเขียนเพื่อใช้การเปลี่ยนแปลงที่เกิดขึ้นกับแผนผังต้นทางกับหนึ่งในแผนผังปลายทาง ตัวเลือกชุดการเขียนทำให้ไคลเอนต์ rsync เก็บไว้ใน "แบตช์ไฟล์" ข้อมูลทั้งหมดที่จำเป็นในการทำซ้ำการดำเนินการนี้กับต้นไม้ปลายทางอื่น ๆ ที่เหมือนกัน
การสร้างแบตช์ไฟล์ครั้งเดียวจะบันทึกไม่ต้องดำเนินการสถานะไฟล์การตรวจสอบและการสร้างบล็อคข้อมูลมากกว่าหนึ่งครั้งเมื่ออัปเดตต้นไม้หลายปลายทาง Multicast transport protocols สามารถใช้ในการถ่ายโอนไฟล์การอัพเดทแบบแบ็ตช์ไปยังหลาย ๆ โฮสต์ได้พร้อมกันแทนที่จะส่งข้อมูลเดียวกันไปยังโฮสต์ทุกเครื่อง
เมื่อต้องการใช้การเปลี่ยนแปลงที่บันทึกไว้กับแผนผังปลายทางอื่นให้รัน rsync ด้วยตัวเลือกชุดอ่านข้อมูลโดยระบุชื่อไฟล์แบตช์เดียวกันและแผนผังปลายทาง Rsync อัพเดตแผนผังปลายทางโดยใช้ข้อมูลที่เก็บไว้ในไฟล์แบตช์
เพื่อความสะดวกของคุณไฟล์สคริปต์จะถูกสร้างขึ้นเมื่อมีการใช้ตัวเลือกชุดงานเขียน: มันจะตั้งชื่อเหมือนกับไฟล์ชุดงานที่มี ".sh" ต่อท้าย ไฟล์สคริปต์นี้มีบรรทัดคำสั่งที่เหมาะสมสำหรับการอัพเดตทรีปลายทางโดยใช้ไฟล์แบตช์ที่เกี่ยวข้อง สามารถดำเนินการได้โดยใช้เชลล์ Bourne (หรือ Bourne-like) ซึ่งเป็นทางเลือกที่จะผ่านชื่อพา ธ ต้นไม้ปลายทางอื่นซึ่งจะถูกใช้แทนเส้นทางปลายทางเดิม สิ่งนี้มีประโยชน์เมื่อเส้นทางต้นไม้ปลายทางบนโฮสต์ปัจจุบันแตกต่างจากที่ใช้ในการสร้างแบตช์ไฟล์
Examples:
$ rsync --write-batch=foo -a host:/source/dir/ /adest/dir/
$ scp foo* remote:
$ ssh remote ./foo.sh /bdest/dir/
$ rsync --write-batch=foo -a /source/dir/ /adest/dir/
$ ssh remote rsync --read-batch=- -a /bdest/dir/ <foo
ในตัวอย่างเหล่านี้ rsync ใช้เพื่ออัปเดต / adest / dir / from / source / dir / และข้อมูลที่จะทำซ้ำการดำเนินการนี้จะถูกเก็บไว้ใน "foo" และ "foo.sh" จากนั้นโฮสต์ "ระยะไกล" จะได้รับการอัปเดตด้วยข้อมูลที่แบตช์ไปยังไดเรกทอรี / bdest / dir ความแตกต่างระหว่างสองตัวอย่างแสดงให้เห็นถึงความยืดหยุ่นบางอย่างที่คุณมีในวิธีจัดการกับแบทช์:
ตัวอย่างแรกแสดงให้เห็นว่าสำเนาเริ่มต้นไม่จำเป็นต้องเป็นแบบโลคัลคุณสามารถพุชหรือดึงข้อมูลไปยัง / จากรีโมตโฮสต์โดยใช้ไวยากรณ์รีโมตเชลล์หรือซิงโครไนซ์ rsync daemon ตามต้องการ
ตัวอย่างแรกใช้ไฟล์ "foo.sh" ที่สร้างขึ้นเพื่อรับตัวเลือก rsync ที่ถูกต้องเมื่อเรียกใช้คำสั่ง read-batch บนโฮสต์ระยะไกล
ตัวอย่างที่สองอ่านข้อมูลแบตช์ผ่านอินพุตมาตรฐานเพื่อให้ไม่ต้องคัดลอกไฟล์แบตช์ไปยังเครื่องระยะไกลก่อน ตัวอย่างนี้หลีกเลี่ยงสคริปต์ foo.sh เนื่องจากจำเป็นต้องใช้ตัวเลือก --read-batch ที่แก้ไข แต่คุณสามารถแก้ไขไฟล์สคริปต์ได้หากคุณต้องการใช้มัน (เพียง แต่ต้องแน่ใจว่าไม่มีตัวเลือกอื่นที่พยายามใช้มาตรฐาน อินพุตเช่นตัวเลือก "--exclude-from = -")
คำเตือน:
ตัวเลือกชุดการอ่านคาดว่าต้นไม้ปลายทางที่มีการปรับปรุงจะเหมือนกับต้นไม้ปลายทางที่ใช้ในการสร้างชุดการปรับปรุงไฟล์ เมื่อพบความแตกต่างระหว่างต้นไม้ชาติปลายทางที่พบการอัปเดตอาจถูกยกเลิกพร้อมกับคำเตือน (หากไฟล์ดูเหมือนว่ามีความทันสมัยอยู่แล้ว) หรืออาจพยายามอัปเดตไฟล์แล้วหากไฟล์ไม่สามารถตรวจสอบได้ การอัปเดตถูกทิ้งโดยมีข้อผิดพลาด ซึ่งหมายความว่าควรจะปลอดภัยในการเรียกใช้การดำเนินการแบบอ่านซ้ำอีกครั้งหากคำสั่งถูกขัดจังหวะ หากคุณต้องการบังคับให้พยายามทำการอัพเดตแบบแบตช์เสมอโดยไม่คำนึงถึงขนาดและวันที่ของไฟล์ให้ใช้ตัวเลือก -I (เมื่ออ่านแบตช์) หากเกิดข้อผิดพลาดทรีปลายทางอาจอยู่ในสถานะที่ได้รับการปรับปรุงบางส่วน ในกรณีนั้น,
เวอร์ชัน rsync ที่ใช้กับปลายทางทั้งหมดจะต้องเป็นอย่างน้อยใหม่เหมือนที่ใช้ในการสร้างแบตช์ไฟล์ Rsync จะตายโดยมีข้อผิดพลาดหากรุ่นโปรโตคอลในไฟล์แบทช์นั้นใหม่เกินไปสำหรับ rsync ที่อ่านแบบแบทช์ที่จะจัดการ ดูเพิ่มเติมที่ --protocol ตัวเลือกสำหรับวิธีการสร้าง rsync สร้างไฟล์แบทช์ที่ rsync เก่าสามารถเข้าใจได้ (โปรดทราบว่าไฟล์แบตช์เปลี่ยนไปเป็นเวอร์ชัน 2.6.3 ดังนั้นการผสมเวอร์ชั่นที่เก่ากว่ากับเวอร์ชั่นที่ใหม่กว่าจะไม่ทำงาน)
เมื่ออ่านไฟล์แบตช์ rsync จะบังคับให้มีค่าของตัวเลือกบางตัวเพื่อจับคู่ข้อมูลในไฟล์แบตช์หากคุณไม่ได้ตั้งค่าให้เหมือนกันกับคำสั่งการเขียนแบทช์ ตัวเลือกอื่นสามารถเปลี่ยน (และควร) ได้ ตัวอย่างเช่น - การเขียนแบบแบทช์เปลี่ยนเป็น - อ่าน - แบตช์ - ไฟล์ - จากถูกดร็อปและ - ฟิลเตอร์ / - รวม / - ไม่รวมตัวเลือกที่ไม่ต้องการยกเว้นว่ามีการระบุตัวเลือก - ลบ .
รหัสที่สร้างไฟล์ BATCH.sh แปลงตัวกรอง / รวม / แยกตัวเลือกใด ๆ ลงในรายการเดียวที่ผนวกเข้ากับเอกสาร "นี่" ไปยังไฟล์สคริปต์เชลล์ ผู้ใช้ขั้นสูงสามารถใช้สิ่งนี้เพื่อแก้ไขรายการแยกหากต้องการการเปลี่ยนแปลงในสิ่งที่ถูกลบโดย - ลบเป็นที่ต้องการ ผู้ใช้ทั่วไปสามารถละเว้นรายละเอียดนี้และใช้เชลล์สคริปต์เป็นวิธีที่ง่ายในการรันคำสั่ง --read-batch ที่เหมาะสมสำหรับข้อมูลที่แบตช์
โหมดแบตช์ดั้งเดิมใน rsync อ้างอิงจาก "rsync +" แต่เวอร์ชันล่าสุดใช้การปรับใช้ใหม่
ฉันคิดว่าคุณสามารถลอง
rsync --write-batch=foo -Pav /junk user@host1:/backup
foo.sh user@host2:/backup
foo.sh user@host3:/backup
remote destination is not allowed with --read-batch