บน Windows: ปลอดภัยไหมที่จะทำ robocopy เพื่อทำการโคลนระบบ?


16

ผมขอเริ่มด้วยการให้พื้นหลังหน่อย บนระบบ Linux ฉันมักจะใช้ความจริงที่ว่าตราบใดที่ฉันสามารถรับไฟล์ทั้งหมดจากฮาร์ดไดรฟ์หนึ่งไปยังฮาร์ดไดรฟ์อื่นและตราบใดที่ฉันแก้ไขบูทโหลดเดอร์ ระบบการทำงาน สิ่งเดียวกันทำงานได้สำหรับการสำรองข้อมูลและกู้คืน (ไม่จำเป็นต้องมีการสำรองข้อมูลสถานะระบบพิเศษเพียงแค่ไฟล์) ... แม้กระทั่ง MySQL ก็สามารถกู้คืนได้บางครั้งแม้ว่าจะไม่ได้ถูกแช่แข็งในเวลาที่ทำการสำรองข้อมูล

บน Windows ฉันไม่เคยมีโชคกับการโคลนระบบโดยทำในระดับไฟล์ ฉันต้องการเครื่องมือเช่น VMWare Converter, Ghost, diXML และอื่น ๆ พวกเขาใช้ภาพของไดรฟ์โดยรวม ตอนแรกฉันคิดว่านี่เป็นเพราะหน้าต่างพิเศษ / เวทย์มนตร์เป็นรีจิสตรีและฉันก็ไม่ได้ถามมัน (มันใช้งานได้) จนถึงวันนี้. ฉันตระหนักว่าการคิดเช่นนี้เป็นใบ้และในความเป็นจริง Windows ก็เป็นเพียงชุดของไฟล์ ดังนั้นในการทดสอบที่ฉันใช้ Windows Server Drive แบบออฟไลน์ฉันจึงคัดลอกไฟล์ไปยังฮาร์ดไดรฟ์เปล่าทำให้ไดรฟ์ใช้งานได้และมันทำงานได้อย่างสมบูรณ์แบบ!

หรือว่ามัน? ทำไมฉันถึงมีความกลัวอย่างไม่มีเหตุผลว่ามันจะล้มเหลวเพียงเพราะมันไม่ใช่โคลนแบบคำต่อคำอย่างที่ฉันคาดไว้กับ Ghost? ฉันควรจะกลัวไหม ทำไมมันง่ายจัง เซิร์ฟเวอร์โฆษณาต่างกันหรือไม่? มีกรณีที่วิธีนี้จะล้มเหลวหรือไม่

หากการคัดลอกแบบไฟล์ต่อไฟล์เป็นวิธีที่จะไปทำไมเมื่อฉันพยายามทำสิ่งเดียวกันกับ VSS (การเปิดเผยเงาที่คัดลอก C: ไดรฟ์เป็นไดรฟ์ S:) วิธีการเดียวกันล้มเหลว โดยเฉพาะอย่างยิ่งฉันได้รับระบบการบูตตลอดจนหน้าจอเข้าสู่ระบบ แม้จะยอมรับรหัสผ่านของฉัน แต่ก็ลงชื่อออกจากผู้ใช้ทันทีโดยไม่มีข้อผิดพลาดใน GUI ฉันได้ลองปิดระบบทั้งหมด แต่ไม่สามารถหยุดบริการได้ก่อนที่จะคัดลอก ... ผลลัพธ์เดียวกัน

โดยวิธีที่ฉันใช้robocopy /E /SECสำหรับการทำสำเนาทั้งหมดเหล่านี้

ฉันกำลังมองหาปัญหาโดยใช้วิธีการเหล่านี้หรือไม่ ฉันรู้ว่า Ghost ฯลฯ นั้นได้รับการพิสูจน์แล้ว .. ... ฉันเข้าใจทั้งหมด ... แต่ในฐานะมืออาชีพฉันอยากรู้ว่าทำไมสิ่งต่าง ๆ ถึงทำงานเหมือนที่พวกเขาทำ นั่นเป็นเหตุผลที่สำคัญสำหรับฉันที่จะเข้าใจสิ่งนี้ (ไม่ต้องพูดถึงความเป็นไปได้ที่หายากที่จะต้องทำการกู้คืนโลหะเปลือยบนระบบที่ฉันไม่เคยมีการสำรองข้อมูลสถานะระบบ)


2
การระบุกรณีที่เฉพาะเจาะจงของตัวควบคุมโดเมน: โปรดทราบว่าไม่มีวิธีที่ปลอดภัยในการโคลนตัวควบคุมโดเมนเนื่องจากการทำเช่นนั้นทำให้การจำลองแบบ Active Directory ยุ่งเหยิง ฉันสับสนกับรายละเอียด แต่โดยทั่วไปแล้ว DC แต่ละอันมีตัวระบุเฉพาะที่จำเป็นต่อการรักษาลำดับการเปลี่ยนแปลงโฆษณาให้สอดคล้องกัน หาก DCs สองอันพยายามใช้ตัวระบุเดียวกันระบบทั้งหมดจะยุบลงในกองที่กำลังกรีดร้อง
แฮร์รี่จอห์นสตัน

นอกจากนี้โปรดทราบว่าไม่ปลอดภัยในการประชาสัมพันธ์เซิร์ฟเวอร์ที่ถูกโคลนไปยังตัวควบคุมโดเมน หากอินสแตนซ์ของ Windows กำลังจะเป็น DC จะต้องติดตั้งผ่านการตั้งค่า Windows การไม่ปฏิบัติตามข้อควรระวังนี้อาจทำให้เกิดอาการแปลก ๆ หลายอย่าง
แฮร์รี่จอห์นสตัน

คำตอบ:


4

เซิร์ฟเวอร์โฆษณานั้นแตกต่างกัน ตัวควบคุมโดเมนมีตัวแยกไดเรกทอรีในไดเรกทอรี C: \ Windows \ SYSVOL \ sysvol ที่ชี้ไปที่ไดเรกทอรี C: \ Windows \ SYSVOL \ domain:

 Directory of C:\Windows\SYSVOL\sysvol

04/13/2011  01:22 PM    <DIR>          .
04/13/2011  01:22 PM    <DIR>          ..
04/13/2011  01:22 PM    <JUNCTION>     domainName.acme.com [C:\Windows\SYSVOL\domain]

การดำเนินการคัดลอกด้วยตนเองเกือบทุกประเภทจะส่งผลให้ SYSVOL ที่ไม่ได้ออนไลน์เนื่องจากการเชื่อมต่อ borked แม้ว่าจะมีความถูกต้อง แต่สิ่งนี้สามารถเกิดขึ้นได้ในสถานการณ์การกู้คืนปกติดังนั้นจึงแนะนำให้ตรวจสอบและสร้างทางแยก SYSVOL อีกครั้งหากจำเป็น

เมื่อพูดถึงลิงก์ระบบ Windows 2008 / Vista / Windows 7 อาจมีลิงค์หลายพันรายการในโฟลเดอร์% SYSTEMROOT% \ System32 สำหรับไบนารี เป้าหมายลิงก์เหล่านี้อยู่ในโฟลเดอร์% SYSTEMROOT% \ Winsxs

ฉันไม่ได้ยืนยันสิ่งนี้ แต่ Robocopy อาจคัดลอกเป้าหมายแทนที่จะเป็นลิงก์ ซึ่งจะอธิบายสวิตช์ / SL :: "คัดลอกลิงก์สัญลักษณ์เทียบกับเป้าหมาย"

อาจเป็นไปได้ว่าระบบอาจทำงานได้อย่างถูกต้อง แต่สิ่งที่จะเกิดขึ้นเมื่อถึงเวลาต้องดำเนินการกิจกรรมการอัปเดตระบบซึ่งจำเป็นต้องบำรุงรักษาไฟล์ที่เป้าหมายการเชื่อมโยงอยู่ บางทีมันอาจจะสร้างพวกมันขึ้นมาใหม่ แต่นั่นเป็นการทดสอบที่คุ้มค่า

หากคุณสงสัยว่าลิงก์เหล่านี้ถ่ายโอนไปยังดิสก์ที่คัดลอกได้อย่างไรคุณสามารถทำก่อนและหลังสแน็ปช็อตจากนั้นเปรียบเทียบไฟล์โดยใช้ Windiff หรือ Notepad ++

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อรับเอาต์พุตจุดแยกบนไดรฟ์:

dir C:\ /aL /s  >> junctions.txt  

คุณสามารถใช้สคริปต์ต่อไปนี้ในไฟล์เพื่อรับเอาต์พุตของลิงก์สำหรับตำแหน่ง (ตัวอย่างเช่น systemroot):

for /r %systemroot% %%i in (*.exe,*.dll) do (
  echo Checking file: %%i >> file.txt
  fsutil.exe hardlink list "%%i" >> file.txt 2>&1
  echo . >> file.txt
)

คุณพูดถูก จุดเชื่อมต่อเป็นปัญหาหลัก จากการทำวิจัยเพิ่มเติมเกี่ยวกับเรื่องนี้ไม่เพียง แต่เซิร์ฟเวอร์โฆษณาที่ใช้ทางแยก Windows 7 ก็ใช้มันอย่างหนักเช่นกัน Robocopy ไม่ทราบวิธีคัดลอก junctions "Robocopy อาจพบ Junctions ... นี่อาจเป็น Volume Mount Points ที่สร้างโดยใช้คำสั่ง MOUNTVOL หรือ Directory Directory ที่สร้างโดยใช้คำสั่ง LINKD Robocopy จัดการ Junctions ในแหล่งที่มาโดยการสร้าง Directory ปกติของ ชื่อเดียวกันในปลายทางเนื่องจากอาจไม่สามารถทำซ้ำจุดเชื่อมต่อในปลายทางได้ " ... มีเครื่องมือคัดลอกไฟล์ได้หรือไม่?
ixnaum

นี่คือรายละเอียดเพิ่มเติมเกี่ยวกับ robocopy ที่ไม่สามารถคัดลอก junctions บน Windows 7 fastcopyสามารถคัดลอก junctions ที่คาดคะเน ... จะลองทำสิ่งต่อไป
ixnaum

1
ปัญหาที่อาจเกิดขึ้นอีกประการหนึ่ง Windows 7 (อาจเป็น 2008) มีจุดเชื่อมต่อแบบวงกลมในแต่ละโฟลเดอร์โปรไฟล์ผู้ใช้ภายใต้ C: \ users \ <user> \ AppData \ Local \ สำหรับ "Application Data" หากคุณเรียกใช้ Robocopy โดยใช้บัญชีที่มีสิทธิ์สำรองหรือเปลี่ยนสิทธิ์ของโฟลเดอร์คุณสามารถเข้าสู่วงวนไม่สิ้นสุดบนทางแยกนั้นได้
เกร็ก Askew

7

ฉันใช้โคลนระดับไฟล์ (โดยใช้ntfscloneยูทิลิตี้Linux NTFS Tools ) ของ Windows 2000 และ Windows XP ฉันไม่ได้ลองntfscloneกับ Windows Vista หรือรุ่นที่ใหม่กว่า แต่ฉันไม่คาดหวังว่าจะมีปัญหาใด ๆ ฉันใช้เครื่องมือการโคลนนิ่งระดับไฟล์ของ Microsoft ImageXซึ่งค่อนข้างสม่ำเสมอกับ Windows XP และ Windows 7 และไม่มีปัญหาเช่นนั้น โดยทั่วไปฉันไม่ได้โคลนคอมพิวเตอร์เซิร์ฟเวอร์ แต่ฉันคาดว่าImageXจะทำงานได้ดีกับระบบปฏิบัติการเซิร์ฟเวอร์

การคัดลอกระบบไฟล์สดเป็นเรื่องที่ท้าทายเสมอ Volume Shadow Copy ควรจะเปิดเผยระบบไฟล์ที่นิ่ง แต่ฉันคิดว่าคุณยังคงมีโอกาส (ฉันไม่สามารถบอกคุณได้ว่าเกิดอะไรขึ้นกับไดรฟ์ข้อมูลแบบโคลน VSS ของคุณที่ไม่อนุญาตให้คุณเข้าสู่ระบบโดยที่ไม่สามารถเห็นโคลนที่ล้มเหลวได้จริงๆเป็นเรื่องยากที่จะวินิจฉัย) ฉันมักจะแนะนำให้คุณโคลนระบบที่ออฟไลน์ถ้าเป็นไปได้

สมมติว่าคุณกำลังคัดลอกระบบไฟล์ที่สมบูรณ์และสามารถรับไฟล์ทั้งหมดที่คุณกังวลเพียงอย่างเดียวคือ:

  • มีมาสเตอร์บูตเรกคอร์ดที่ดี (MBR) และพาร์ติชันบูตเรกคอร์ด (PBR)
  • มี bootloader ที่ดี

Microsoft bootsect.exeสามารถใช้เพื่อเขียน MBR และ PBR ที่ดีสำหรับรุ่น NTLDR รุ่นเก่าที่ใช้ Windows NT (NT 3.5 ถึง Windows Server 2003) และรุ่นที่ใช้ BOOTMGR (Windows Vista และใหม่กว่า) Windows 2003 clone ของคุณต้องเป็นดิสก์ที่มี PBR รูปแบบ NT 5.2 (ตั้งแต่บูต)

bootloader NTLDR จะถูกคัดลอกในสำเนาระดับไฟล์ซึ่งจะอธิบายว่าเหตุใดสำเนา Windows 2003 ของคุณจึงทำงานได้โดยไม่มีปัญหา bootloader ของ BOOTMGR สามารถติดตั้งได้โดยใช้bcdboot.exeยูทิลิตี้นี้

ฉันจะไม่ลอกแบบคอมพิวเตอร์ Active Directory Domain Controller (DC) ด้วยวิธีนี้ คุณไม่ต้องการบูตโคลน DC ในเครือข่ายเดียวกันกับ DC ดั้งเดิมเพราะนี่เป็นสถานการณ์ที่ไม่ได้รับการสนับสนุนและมีแนวโน้มว่าจะไม่ได้วางแผนไว้

แก้ไข (ตอนนี้ฉันมีไม่กี่นาทีบนคอมพิวเตอร์จริง):

เครื่องมือที่ฉันอธิบายไว้ข้างต้นImageXและntfscloneเป็นเครื่องมือโคลนระดับระบบไฟล์ (เช่นเดียวกับ Ghost หากไม่ได้ทำงานในโหมดเซกเตอร์ดิบ) พวกเขาตีความระบบไฟล์ NTFS แทนการคัดลอกเซกเตอร์สำหรับเซกเตอร์ เครื่องมือทั้งสองนี้จะไม่มีปัญหากับจุดเชื่อมต่อหรือฮาร์ดลิงก์เช่นROBOCOPY(โดยไม่มี/SLอาร์กิวเมนต์) และXCOPY(พร้อมอาร์กิวเมนต์ใด ๆ )

โดยทั่วไปแล้ว Microsoft ไม่ได้วางแผนให้คุณทำการโคลนแบบคัดลอกระดับไฟล์ ใช่คุณสามารถทำได้ แต่ถ้ามันหยุดคุณจะได้รับชิ้นส่วน


แต่ ntfsclone และ ImageX เป็นภาพที่มีลักษณะคล้ายกับ Ghost ... แล้วการคัดลอกไฟล์ต่อไฟล์ล่ะ?
ixnaum

1
ImageX ไม่ได้สร้างสำเนาระดับบล็อกของดิสก์มันเป็นไฟล์ที่แน่นอน (แน่นอนว่าสร้าง "ไฟล์ภาพ" แต่มันก็เหมือนกับไฟล์ zip มากกว่า iso.) ImageX เป็นวิธีเดียวที่สนับสนุนวิธีนี้เท่านั้น
แฮร์รี่จอห์นสตัน

4

ปัญหาเกี่ยวกับการคัดลอกระบบไฟล์สดจากVSSการที่อินสแตนซ์ Windows ที่มีอยู่อาจจะมีลายเซ็นของดิสก์ใหม่ที่มีอยู่แล้วในรีจิสทรี เมื่อคุณบู๊ตสำเนาลายเซ็นของพาร์ติชั่นนั้นจะทำการบูทจากนั้นจะถูกจับคู่กับรีจิสตรีและต่อเข้ากับD:หรือE:แทนที่จะC:เป็น

คุณสามารถจัดเรียงสิ่งนี้ได้โดยติดตั้งไฟล์รีจิสตรีและอัปเดตHKLM\SYSTEM\MountedDevices ทำสิ่งนี้หลังจากทำสำเนา แต่ก่อนจะรีสตาร์ท คุณเพียงแค่ต้องการที่จะลบรายการและเปลี่ยนรายการสำหรับไดรฟ์ใหม่ของคุณ\DosDevices\C:C:

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