การใช้ tar และ rsync เพื่อความพร้อมใช้งานสูง


13

ฉันมีเซิร์ฟเวอร์คลาวด์ Ubuntu ที่ทำงานอยู่ซึ่งฉันไม่สามารถเข้าถึงได้โดยตรง แต่ใช้ ssh ฉันใช้ 'tar' เพื่อโคลนหรือมีความพร้อมใช้งานสูงของเซิร์ฟเวอร์นี้ ฉันติดตามการสอนจากลิงค์ [ลิงค์ข้อความ] [1] ฉันลองนี่ติดตั้งเซิร์ฟเวอร์ใหม่ในรุ่นเดียวกัน เมื่อฉันแยก tar (tar -xvpzf ~ / clone.tgz -C /) บนปลายทาง (ใหม่) ท้ายที่สุดมันลงท้ายด้วยเอาต์พุตต่อไปนี้คล้ายกับด้านล่าง (ไม่รู้ว่ามันเป็นข้อผิดพลาด)

tar: var/run: time stamp 2010-11-09 17:09:11 is 7335.159880406 s in the future
tar: var/spool/postfix/usr/lib/zoneinfo: time stamp 2010-11-09 17:08:26 is 7290.159730037 s in the future
tar: var/lib: time stamp 2010-11-09 17:27:51 is 8455.159349527 s in the future
tar: usr/bin: time stamp 2010-11-09 17:28:02 is 8466.159254097 s in the future
tar: usr/share/sgml: time stamp 2010-11-09 17:27:47 is 8451.158909506 s in the future
tar: usr/share/man/man7: time stamp 2010-11-09 17:27:50 is 8454.158393583 s in the future
tar: usr/share/man/man1: time stamp 2010-11-09 17:28:02 is 8466.158166556 s in the future
tar: usr/share/man/man8: time stamp 2010-11-09 17:27:51 is 8455.158057701 s in the  future
tar: usr/share/omf/time-admin: time stamp 2010-11-09 17:27:52 is 8456.157830449 s in the future
---------------------------------------------
---------------------------------------------
---------------------------------------------

ฉันใช้คำสั่งต่อไปนี้เพื่อสร้างไฟล์ tar ของไดเรกทอรีที่ระบุในระบบต้นทาง

tar -cvzf ~/clone.tgz --exclude ~/clone.tgz --exclude /etc/hosts --exclude /etc/hostname --exclude /etc/udev/ --exclude /etc/network/interfaces --exclude /etc/resolv.conf  /etc /home /opt /tmp /usr /var /mnt
  • มีข้อควรระวังก่อนใช้ tar หรือไม่? (tar คือการสร้างครั้งเดียวจากนั้นฉันจะใช้ rsync)
  • ฉันควรจะรวมไดเรกทอรีอื่น ๆ เช่น bin หรือ lib หรือไม่ - แนะนำฉัน
  • ฉันควรจะยกเว้นไดเรกทอรีใด ๆ เช่นฉันมีปัญหาอุปกรณ์เครือข่าย (eth0) (ไม่สามารถเริ่มต้น eth0 ได้) ดังนั้นในคำสั่งข้างต้นฉันได้ยกเว้น "/ etc / udev /" และหลังจากนี้ฉันรู้สึกว่ามันดี เช่นนี้มีสิ่งใดบ้างที่ฉันจะแยกออกจาก / etc / หรือจากไดเรกทอรีใด ๆ ที่ฉันรวมไว้ - แนะนำฉัน
  • ฉันจะกำหนดเวลา rsync (incremental bkp) ด้วยการรวม ssh เพื่อซิงค์ไดเรกทอรี (ที่ระบุใน tar) ไปยังตำแหน่งระยะไกลได้อย่างไร (พูด / mnt / newdir) ซึ่งฉันสามารถ tar และแยกในภายหลังในกรณีที่ระบบล้มเหลว Rsync สามารถกำหนดให้ทำงานในฐานะผู้ใช้รูท แต่ ssh จะถามรหัสผ่าน FYI, sudo ถูกปิดการใช้งานอย่างสมบูรณ์และการปิดใช้งานการเข้าสู่ระบบ ssh โดยตรงไปยังราก

หากมีวิธีที่ดีกว่าโดยไม่มีอันตรายใด ๆ กับเซิร์ฟเวอร์เพื่อให้บรรลุสิ่งนี้สามารถแนะนำ

[1]: http://ubuntuforums.org/showthread.php ? t = 525660

คำตอบ:


9

ฉันอยากจะแนะนำให้คุณใช้ rsync แทนมันจะช่วยให้คุณทำระบบจริงในการซิงโครไนซ์ระบบจริงโดยไม่จำเป็นต้องใช้ไฟล์ชั่วคราว มันยังให้ประโยชน์ของการทำการอัพเดตแบบเพิ่มเติมเมื่อคุณต้องการอัพเดต clone

ฉันจะยกเว้นเท่านั้น: / proc / / sys / dev / tmp / mnt บนระบบโคลนคุณจะต้องแน่ใจว่า / etc / fstab และ /boot/grub/grub.cfg ได้รับการอัพเดตด้วย UUIDs ของพาร์ติชันระบบโคลน

หากคุณมีฐานข้อมูลเช่น mysql คุณจะต้องระวังและหยุดฐานข้อมูลก่อนดำเนินการคัดลอก


ใช่ฉันจำได้ดีว่าฉันจะต้องยกเว้น '/ etc / fstab' และ '/boot/gru/grub.cfg' เป็นสิ่งที่ดีหรือไม่? โปรดวางคำสั่งสำหรับการซิงโครไนซ์แบบเพิ่มหน่วยของไดเรกทอรีที่ระบุ
user3215

Ofcourse /boot/grub/grub.cfg ไม่ได้รวมอยู่ด้วย
user3215

ฉันจะอัพเดต UUIDs ของระบบโคลนได้อย่างไร
user3215

คุณจะต้องแทนที่ UUIDs จากพาร์ติชันดั้งเดิมในการกำหนดค่า fstab และ grub ด้วย UUID ของพาร์ติชันของระบบโคลน คุณสามารถแสดงรายการรหัสพาร์ติชันด้วย: blkid
João Pinto

คุณหมายถึงว่า UUID ควรเหมือนกันทั้งสองระบบ
user3215

6

ก่อนอื่นผู้ให้บริการคลาวด์ของ IaaS จำนวนมากให้ความสามารถในการจับภาพที่มีประสิทธิภาพซึ่งสามารถแก้ไขปัญหานี้ได้อย่างง่ายดาย

บน EC2 หากคุณใช้ระบบที่ใช้ EBS คุณสามารถถ่ายภาพเป็นระยะ ๆ ได้ หากมีบางอย่างที่น่ากลัวเกิดขึ้นกับอินสแตนซ์ต้นทางคุณสามารถย้อนกลับไปยังสแนปชอตก่อนหน้าบนอินสแตนซ์ใหม่ได้ หากคุณต้องการเก็บถาวรสแน็ปช็อตคุณสามารถบูตอินสแตนซ์อื่นที่แนบมาและใช้งานเช่น tar + s3 โดยไม่ส่งผลเสียต่อกล่องการผลิต

มีปัญหามากมายเกี่ยวกับวิธีการนี้ซึ่งอาจไม่ชัดเจนในขณะนี้

  1. คุณกำลังล็อคตัวเองเป็นเทคโนโลยีเดียว หากคุณใช้งาน Ubuntu 10.10 ได้และต้องการไปที่ 11.04 คุณต้องอัพเกรดระบบต้นทางแล้วทำการจับภาพอีกครั้ง ในทำนองเดียวกันถ้าคุณใช้สแนปชอต EBS ของ EC2 คุณต้องมีโซลูชันใหม่ถ้าคุณไปที่ rackspace cloud
  2. คุณไม่มีประวัติการเปลี่ยนแปลงหากคุณใช้ rsync หากคุณปรับเปลี่ยนบางอย่างในระบบ 1 แสดงว่ามีบางอย่างหยุดพักคุณอาจจะทำลายระบบสำรองของคุณได้เช่นกันเมื่อคุณ rsync
  3. Rsync อาจมีผลกระทบอย่างมากต่อระบบการผลิตของคุณ

สิ่งที่คุณต้องการคือระบบจัดการการกำหนดค่าและความพร้อมใช้งานของข้อมูลสูง

ฉันขอแนะนำให้คุณเลือกระบบการจัดการการกำหนดค่าเช่นหุ่นเชิด (ในหลัก!), เชฟหรือ cfengine เริ่มต้นทำการกำหนดค่าทั้งหมดของคุณในระบบการจัดการการกำหนดค่าจากนั้นคุณสามารถบูตระบบทั่วไปและใช้การจัดการการกำหนดค่ากับมัน เพิ่มใน 'etckeeper' และคุณมีประวัติ

สำหรับข้อมูลที่มีความพร้อมใช้งานสูง rsync ควรใช้งานได้และตรงไปตรงมามากขึ้นเพราะคุณสามารถคัดลอกข้อมูลที่คุณต้องการ นอกจากนี้ยังมี drbd เพื่อให้มีจำนวนเท่าใดกับ "เครือข่าย RAID1" สิ่งเหล่านี้ไม่ใช่การแทนที่สำหรับการสำรองข้อมูลซึ่งควรรวมถึงสแนปชอตทางประวัติศาสตร์ (ไม่ว่าจะผ่านสแนปชอตของอุปกรณ์บล็อกหรือบางอย่างเช่น tar) แทนที่จะซิงค์กับโฮสต์การกู้คืน ที่นั่นด้วยเหรอ?)


2

ข้อความน่าจะเกิดขึ้นเนื่องจากนาฬิกาเซิร์ฟเวอร์ใหม่ล้าสมัยกว่านาฬิกาเก่า

หากคุณกำลังโคลนการกำหนดค่าตัวจัดการแพคเกจและฐานข้อมูล (และคุณ) คุณควรโคลน / bin, / sbin และ / lib มิฉะนั้นระบบปลายทางจะอยู่ในสถานะไม่สอดคล้องกัน อีกวิธีหนึ่งคือการยกเว้น /etc/dpkg.info / etc / apt / var / lib / apt และ / var / lib / dpkg และติดตั้งแพ็กเกจทั้งหมดในระบบเป้าหมายอีกครั้ง

ไฟล์ใน / var / dpkg และ / var / apt มีข้อมูลเกี่ยวกับสิ่งที่ติดตั้งในระบบของคุณ หากคุณไม่ได้ยกเว้นพวกเขาผู้จัดการแพคเกจจะเชื่อว่าโปรแกรมและการอ้างอิงทั้งหมดในระบบแม่ถูกติดตั้งในเป้าหมาย แต่ถ้าคุณไม่ได้คัดลอก / bin, / sbin ฯลฯ ... พวกเขาจะไม่ มีความเป็นไปได้สูงมากที่บางสิ่งจะแตกหักในการติดตั้งหรืออัปเดตครั้งถัดไป

เพื่อซิงค์แล้วกับ rsync ฉันได้ใช้รับรองความถูกต้องตามการรับรองไม่ใช่รหัสผ่าน มันค่อนข้างง่ายในการติดตั้งฉันจำได้ว่าฉันเพิ่งอ่าน man page ในครั้งแรก นี่คือคำแนะนำโดยย่อหากคุณต้องการข้อมูลเพิ่มเติมฉันเชื่อว่านี่สมควรได้รับคำถามใหม่


ไม่ได้ / ไม่รวม ในคำสั่งข้างต้นหลังจาก "--exclude /etc/resolv.conf" ทุกอย่างรวมอยู่จาก /etc/..../var / mnt ที่จริงฉันได้ระบุสองช่องว่างระหว่าง resolv.conf และ / etc ที่นี่มันไม่แสดง
user3215

ขอโทษฉันลืมส่วนลิงก์
user3215

ตกลงดังนั้นฉันควรรวม bin, sbin และ lib ด้วย โอ้ .. ฉันต้องแยกพวกมันออกและติดตั้งแพ็คเกจทั้งหมด
user3215

จำเป็นหรือไม่ที่จะต้องยกเว้น /etc/dpkg.info / etc / apt / var / lib / apt และ / var / lib / dpkg .. ?
user3215

อัปเดตคำตอบแล้ว
Javier Rivera
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.