Robocopy의 백업 모드는 무엇입니까 데이터베이스 백업 파일을 복사하려고합니다.

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

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

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



답변

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

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

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

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


답변

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

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

다른 한편 robocopy으로

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

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

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

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

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


답변

스냅 샷을 생성하고 이제 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 (및 기타 버전)은 일주일 동안 매일 섀도 복사본을 두 번 실행하여 아래에 생성 된 섀도 복사본이 중단 될 수 있습니다. 이 백업 기술이 자동화 된 예약 된 섀도 명령과 겹치지 않도록하십시오.


답변

@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


답변