Robocopy의 백업 모드는 무엇입니까


19

네트워크를 통해 큰 데이터베이스 백업 파일을 복사하려고합니다.

전통적인 프로그램 복사 또는 xcopy다른 이진으로 실패했습니다. 또한 robocopy매개 변수없이 시도 하여 실패했습니다. 매개 변수 (다시 시작 및 백업 모드) 를 robocopy사용하여 다른 시도를했습니다 /zb. 훨씬 오래 걸렸지 만 성공했습니다.

내 질문은 백업 모드가 실제로 큰 / 백업 파일을 복사하도록 설계 되었습니까? 인터넷을 통해 검색했지만 명확한 답변을 찾을 수 없습니다. 숙련 된 사용자가 나에게 힌트 나 더 나은 해결책을 줄 수 있다면 고맙겠습니다.


xcopy와 robocopy가 실제로 A에서 B로 데이터를 복사하는 방식에는 거의 차이가 없으므로 xcopy를 통해 robocopy를 사용하더라도 우발적 인 데이터 손상 가능성을 줄일 수는 없습니다. 이것은 xcopy를 사용한 후에 DB가 복사되는 동안 수정 되었기 때문에 다른 바이너리를 얻었음을 의미합니다. 소스 파일을 열 때 기본적으로 앱에서 요청한 권한을 제어하는 ​​"/ B"플래그와 같이 "/ Z"플래그는 여기서 관련성이 없습니다 (로보 스코프가 파일의 기존 부분을 건너 뛸 경우에만 제어 함).
Angstrom

@Angstrom 답장을 보내 주셔서 감사합니다. 이진 차이는 정적 백업 파일 (이미 데이터베이스에서 분리되어 있음)이 복사되는 DB이므로 변경되지 않습니다. 사실 나는 / ZB가 더 강력한 복사를 위해 의도적으로 아무것도하지 않는다고 생각하지만 재시작 가능한 플래그는 훨씬 더 오래 걸리고 동일한 사본을 생성한다는 사실 때문에보다 정확한 이진 쓰기를하는 것처럼 보입니다. 또는 재시작 가능성으로 인해 손실 된 데이터를 다시 쓸 수 있습니다.
ydoow

답변:


12

백업 모드는 권한 문제를 무시하고 파일을 읽고 쓰는 방법입니다.

그것은 사용 SeBackupPrivilege(읽기) 및 SeRestorePrivilege읽기 / 파일의 읽고 쓰기에서 당신을 방지 할 수있는 ACE를 무시하고있는 모든 파일을 작성하기 위해 (쓰기).

일반적으로 파일을 복사하거나 액세스하려고 할 때 Windows는 위치를 읽거나 쓸 수있는 권한이 있는지 확인하지만 SeBackupPrivilege(백업 운영자 및 관리자 그룹에 SeRestorePrivilege부여됨 ) 및 (백업 운영자 및 관리자에게도 부여됨) 확인을 수행합니다. 이러한 검사는 무시됩니다.

계정에 이러한 권한이 있는지 확인하려면 whoami /priv명령 프롬프트에서 명령 을 실행할 수 있습니다 .


실제로 확실하게 질문에 대답하는 답변 만 감사합니다. 제공된 정보의 출처는 완벽 할 것입니다.
Hashim

2

위의 문제를 해결하기 위해 업데이트를 공유하고 싶을뿐입니다.

필자의 경우 xcopy다른 도메인 및 서버 위치의 서버에서 10GB가 넘는 파일을 복사하지 못했습니다.

다른 한편 robocopy으로

/zb- 재시작 모드를 사용합니다. 액세스가 거부되면이 옵션은 백업 모드를 사용합니다.

성공적으로 복사 할 수 있습니다. 그러나 시간을 1 시간에서 2.5 시간으로 늘 렸습니다.

-

서버를 다시 정렬하면 파일이 동일한 도메인 및 서버 위치의 서버에 복사됩니다. 그리고 사용 xcopy도 괜찮습니다.

-

그래서 이것에 대한 나의 이론은 아마도 서버 간의 안정성 연결에 관한 것일 것입니다. 연결이 강력하지 않은 경우 (종종 액세스 문제로 인해 액세스 문제가 발생하는 경우) 내 경우와 같이 큰 파일을 복사 할 때 프로세스가 진행되는 동안 언제든지 손상이 발생할 수 있습니다. robocopy재시작 및 백업 꽤 잘 복사본을 복구 할 수 있습니다. 회복에 소요되는 시간은 아마도 단점입니다.

참고로, 일상적인 작업이 되려면 복사 대신 FTP를 사용해야합니다.


2

스냅 샷을 생성하고 이제 Quiesce 파일 시스템을 백업하는 것이 좋습니다. 그런 다음 / J (큰 파일의 경우 버퍼되지 않은 I / O)를 사용하여 robocopy를 빠르게 실행할 수 있습니다. 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.