Що таке резервне копіювання в режимі роботи


19

Я намагаюся скопіювати великий файл резервної копії бази даних через мережу.

Традиційна копія програми або xcopyвийшла з ладу з різними бінарними результатами. Також спробували robocopyбез параметра і призвели до помилки. Просто зробила ще одну спробу robocopyвикористання /zbпараметра (режим перезавантаження та резервного копіювання). Це зайняло набагато більше часу, але призвело до успіху.

Моє запитання: чи дійсно створений режим резервного копіювання для копіювання великого / резервного файлу? Шукали через мережу і не змогли знайти чіткої відповіді. Буду вдячний, якщо будь-який досвідчений користувач міг би дати нам підказку чи краще рішення.


Існує дуже мала різниця між тим, як xcopy та robocopy насправді копіюють дані з A до B, тому використання robocopy через xcopy не знизить ваші шанси на випадкові пошкодження даних. Це означає, що ви отримали інший двійковий файл після використання xcopy, швидше за все, тому що БД був змінений під час його копіювання. Прапор "/ Z" тут не має жодної актуальності (він просто контролює, чи роботокопія пропускає існуючу частину файлу), як і прапор "/ B", який в основному контролює дозволи, які вимагає додаток при відкритті вихідного файлу.
Ангстрем

@Angstrom дякую за вашу відповідь. Бінарна різниця полягає не в зміні БД, оскільки копіюється статичний файл резервної копії (вже відірваний від бази даних). Щоправда, я вважаю, що ZB не робить нічого навмисно для більш надійної копії, але, здається, прапор, що перезавантажується, робить більш точним бінарне записування (від того, що це займає набагато більше часу і призводить до ідентичної копії). Або, можливо, перезавантаження дозволяє переписати втрачені дані.
ydoow

Відповіді:


12

Режим резервного копіювання - це спосіб читання та запису файлів, ігноруючи будь-які проблеми з дозволом.

Він використовує SeBackupPrivilege(читання) та SeRestorePrivilege(запис) для читання / запису будь-яких файлів, ігноруючи будь-які АПФ, які заважали б вам читати чи писати файл.

Зазвичай, намагаючись скопіювати або отримати доступ до файлу, Windows здійснює перевірку, щоб переконатися, що ви маєте дозвіл на читання або запис у місцезнаходження, але з SeBackupPrivilege(надано групам операторів резервного копіювання та адміністраторів), а SeRestorePrivilegeтакож (надано також операторам резервного копіювання та адміністраторам). групи) ці перевірки обходять.

Щоб перевірити, чи має ваш обліковий запис ці привілеї, ви можете запустити команду whoami /privв командному рядку.


Лише відповідь, яка насправді відповідає на питання остаточно, дякую. Джерела наданої інформації зробили б її ідеальною.
Хашим

2

Просто хочу поділитися оновленням щодо вирішення проблеми вище.

У моєму випадку xcopyне вдалося скопіювати файл розміром понад 10 Гб на сервери в іншому домені та на сервері.

З іншого боку, robocopyс

/zb- Використовує режим перезапуску. Якщо доступ заборонено, ця опція використовує режим резервного копіювання.

може успішно скопіювати. Однак це збільшило час з 1 години до 2,5 годин.

-

Після переупорядкування сервера файл копіюється на сервери в одному домені та на сервері. І використання xcopyтеж добре.

-

Тож моя теорія щодо цього, мабуть, стосується стабільності зв'язку між серверами. Якщо з'єднання не є надійним (час від часу випадає, спричиняючи проблеми з доступом), при копіюванні великого файлу, як у моєму випадку, можливе пошкодження будь-коли протягом тривалого процесу; robocopyза допомогою перезавантаження та резервного копіювання можна відновити копію досить добре. Час, витрачений на відновлення, ймовірно, знижується.

І як бічна примітка, FTP замість копії слід використовувати, якщо це буде звичайним завданням


2

Я б настійно пропонував вам створити знімок і створити резервну копію файлів, що вже увімкнулися. Потім можна швидко запустити роботокопію, використовуючи / J (нерозподілений введення / вивід для великих файлів). Ось сценарій для створення тіньової копії C: який він називає P:. Цей привід (P :) - це статичне зображення диска C: ідеально підходить для резервного копіювання. Ми використовуємо цю техніку для копіювання зображень активного диска віртуальної машини на резервний диск.

Далі використовується чотири файли сценарію:

  • Пакетний файл для удару команд тіньових дисків
  • команда тіньового диска знищити будь-яку звисаючі чади попередня тінь, якщо внутрішній пакетний файл вийшов з ладу
  • серія команд тіньових дисків для створення тіні як P:
  • ряд команд, які потрібно виконати, поки тінь активна (внутрішній пакетний файл, виконаний під час P: активний)

1) пакетний файл для запуску процесу

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

2) тіньовий командний файл "cleanup.cmds", щоб знищити раніше активну тінь

UNEXPOSE P:

3) тіньовий командний файл "diskshadow.cmds", який створює тінь, а потім викликає четвертий файл

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 (і, можливо, інші версії) виконує тіньову копію двічі на день протягом тижня, що призведе до збою створеної нижче тіньової копії. Переконайтесь, що ця методика резервного копіювання не збігається з цими автоматизованими запланованими тіньовими командами.


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 :

Enter-PSSession RemoteComputer

#
# Run snapshot commands here
#

Exit-PSSession
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.