โหมดสำรองใน Robocopy คืออะไร


19

ฉันพยายามคัดลอกไฟล์สำรองฐานข้อมูลขนาดใหญ่ผ่านเครือข่าย

การคัดลอกโปรแกรมดั้งเดิมหรือxcopyล้มเหลวด้วยผลลัพธ์ไบนารีต่างกัน ลองrobocopyโดยไม่มีพารามิเตอร์และทำให้เกิดความล้มเหลว เพิ่งลองอีกครั้งrobocopyโดยใช้/zbพารามิเตอร์ (รีสตาร์ทและโหมดสำรองข้อมูล) มันใช้เวลานานกว่ามาก แต่ก็ประสบความสำเร็จ

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


มีความแตกต่างกันเล็กน้อยระหว่างวิธีที่ xcopy และ robocopy คัดลอกข้อมูลจริงจาก A ถึง B ดังนั้นการใช้ robocopy ผ่าน xcopy จะไม่ลดโอกาสที่ข้อมูลเสียหายโดยบังเอิญ หมายความว่าคุณได้รับไบนารีที่แตกต่างกันหลังจากใช้ xcopy เป็นไปได้มากที่สุดเพราะ DB ถูกแก้ไขขณะที่ถูกคัดลอก การตั้งค่าสถานะ "/ Z" ไม่มีความเกี่ยวข้องที่นี่ (เพียงควบคุมหาก robocopy ข้ามส่วนที่มีอยู่ของไฟล์) เช่นเดียวกับการตั้งค่าสถานะ "/ B" ที่ควบคุมการขออนุญาตจากแอปเมื่อเปิดไฟล์ต้นฉบับ
อังสตรอม

@ อังค์มขอบคุณสำหรับคำตอบของคุณ ความแตกต่างแบบไบนารีไม่ได้มาจากฐานข้อมูลที่เปลี่ยนแปลงเนื่องจากเป็นไฟล์สำรองข้อมูลแบบสแตติก จริงฉันเชื่อว่า / ZB ไม่ได้ทำสิ่งใดโดยเจตนาเพื่อการคัดลอกที่มีประสิทธิภาพมากขึ้น แต่การตั้งค่าสถานะที่เริ่มใหม่ได้ดูเหมือนจะทำให้การเขียนแบบไบนารี่ที่แม่นยำยิ่งขึ้น (จากข้อเท็จจริงที่ว่ามันใช้เวลานานกว่า หรืออาจเป็นความสามารถในการรีสตาร์ททำให้สามารถเขียนข้อมูลที่สูญหายได้อีกครั้ง
ydoow

คำตอบ:


12

โหมดการสำรองข้อมูลเป็นวิธีการอ่านและเขียนไฟล์โดยไม่สนใจปัญหาการอนุญาตใด ๆ

มันใช้SeBackupPrivilege(อ่าน) และSeRestorePrivilege(เขียน) เพื่ออ่าน / เขียนไฟล์ใด ๆ และทั้งหมดโดยไม่คำนึงถึง ACE ใด ๆ ที่จะป้องกันคุณจากการอ่านหรือเขียนไฟล์

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

ในการตรวจสอบว่าบัญชีของคุณมีสิทธิ์พิเศษเหล่านี้หรือไม่คุณสามารถเรียกใช้คำสั่งได้whoami /privที่หน้าจอพร้อมรับคำสั่ง


ตอบเฉพาะที่จริงตอบคำถามอย่างแน่นอนขอบคุณ แหล่งข้อมูลที่ให้ไว้จะทำให้สมบูรณ์
Hashim

2

เพียงแค่ต้องการแชร์การอัปเดตเพื่อแก้ไขปัญหาข้างต้น

ในกรณีของฉันxcopyล้มเหลวในการคัดลอกไฟล์มากกว่า 10GB ไปยังเซิร์ฟเวอร์ในโดเมนและที่ตั้งเซิร์ฟเวอร์

ในอีกด้านหนึ่งrobocopyด้วย

/zb- ใช้โหมดเริ่มต้นใหม่ หากการเข้าถึงถูกปฏิเสธตัวเลือกนี้ใช้โหมดการสำรองข้อมูล

สามารถคัดลอกได้สำเร็จ มันเพิ่มเวลาจาก 1 ชั่วโมงเป็น 2.5 ชั่วโมง

-

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

-

ทฤษฎีของฉันเกี่ยวกับเรื่องนี้น่าจะเกี่ยวกับความเสถียรของการเชื่อมต่อระหว่างเซิร์ฟเวอร์ หากการเชื่อมต่อไม่เสถียร (ด้วยการเลื่อนออกบางครั้งทำให้เกิดปัญหาการเข้าถึง) เมื่อคัดลอกไฟล์ขนาดใหญ่เช่นกรณีของฉันอาจเกิดความเสียหายได้ตลอดเวลาในระหว่างกระบวนการที่ยาวนาน robocopyด้วยการรีสตาร์ทและการสำรองข้อมูลสามารถกู้คืนสำเนาได้ดี เวลาที่ใช้ไปกับการฟื้นฟูอาจจะเป็นข้อเสีย

และควรใช้ FTP แทนการคัดลอกถ้ามันจะเป็นงานประจำ


2

ฉันขอแนะนำอย่างยิ่งให้คุณสร้างสแน็ปช็อตและสำรองข้อมูลระบบไฟล์ที่ระงับในขณะนี้ จากนั้นคุณสามารถเรียกใช้ robocopy อย่างรวดเร็วโดยใช้ / J (I / O ที่ไม่มีบัฟเฟอร์สำหรับไฟล์ขนาดใหญ่) นี่คือสคริปต์สำหรับสร้าง shadow copy ของ C: ซึ่งเรียกว่า P: ไดรฟ์นี้ (P :) เป็นรูปภาพนิ่งของไดรฟ์ C: เหมาะสำหรับการสำรองข้อมูล เราใช้เทคนิคนี้เพื่อคัดลอกอิมเมจดิสก์เครื่องเสมือนที่ใช้งานอยู่ไปยังไดรฟ์สำรอง

ต่อไปนี้ใช้ไฟล์สคริปต์สี่ไฟล์:

  • ชุดไฟล์ที่จะเตะมันคำสั่งดิสก์เงา
  • คำสั่งเงาดิสก์เพื่อทำลายใด ๆ ห้อย Chads เงาก่อนหน้านี้หากไฟล์แบตช์ด้านในขัดข้อง
  • ชุดคำสั่งดิสก์เงาเพื่อสร้างเงาเป็น P:
  • ชุดคำสั่งที่จะดำเนินการในขณะที่เงาทำงานอยู่ (ไฟล์แบทช์ด้านในจะถูกประมวลผลขณะที่ P: ทำงานอยู่)

1) ไฟล์แบตช์เพื่อเริ่มกระบวนการ

diskshadow -s cleanup.cmds
diskshadow -s diskshadow.cmds

2) ไฟล์คำสั่ง shadow "cleanup.cmds" เพื่อทำลาย shadow ที่ใช้งานก่อนหน้านี้

UNEXPOSE P:

3) ไฟล์คำสั่ง shadow "diskshadow.cmds" ซึ่งสร้าง shadow แล้วเรียกไฟล์ที่สี่

SET CONTEXT PERSISTENT NOWRITERS
SET METADATA example.cab
SET VERBOSE ON
BEGIN BACKUP
ADD VOLUME C: ALIAS systemVolumeShadow
CREATE
EXPORT %systemVolumeShadow% P:
EXEC c:\yourlocation\backup.cmd
UNEXPOSE P:
END BACKUP
RESET

4) ไฟล์คำสั่ง "backup.cmd" เพื่อทำงานบนเงา

REM do the ROBOCOPY commands here, with the source being P:, the shadow of C:

โปรดทราบว่า Windows Server 2016 (และอาจเป็นรุ่นอื่น ๆ ) เรียกใช้ shadow copy สองครั้งต่อวันในช่วงสัปดาห์ซึ่งจะทำให้ shadow copy ที่สร้างด้านล่างล้มเหลว ตรวจสอบให้แน่ใจว่าเทคนิคการสำรองข้อมูลนี้ไม่ทับซ้อนกับคำสั่งเงาที่กำหนดเวลาอัตโนมัติเหล่านี้


0

หากต้องการขยายคำตอบของ @ erict ต่อไปนี้เป็นวิธีการใช้ PowerShell เพื่อสร้างและทำลายสแน็ปช็อต:

$Drive = "D:\"
$Folder = $Drive + "ShadowCopy"

# Create the snapshot
$Snapshot = (gwmi -List Win32_ShadowCopy).Create($Drive, "ClientAccessible")
$Shadow = gwmi Win32_ShadowCopy | ? { $_.ID -eq $Snapshot.ShadowID }
$Volume = $Shadow.DeviceObject + "\"
cmd /c mklink /d "$Folder" "$Volume"

# Destroy the snapshot
cmd /c rd "$Folder"
$Shadow.Delete()

สิ่งนี้สามารถเรียกใช้บนเครื่องระยะไกลได้โดยใช้PowerShell remoting :

Enter-PSSession RemoteComputer

#
# Run snapshot commands here
#

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