web-dev-qa-db-ja.com

Robocopyのバックアップモードとは

大きなデータベースのバックアップファイルをネットワーク経由でコピーしようとしています。

従来のプログラムのコピーまたはxcopyは、異なるバイナリで失敗しました。また、パラメータなしでrobocopyを試したところ、失敗しました。 /zbパラメータを使用してrobocopyでもう一度試みました(再起動およびバックアップモード)。かなり時間がかかりましたが、成功しました。

私の質問は、バックアップモードは本当に大きな/バックアップファイルをコピーするように設計されているのですか?ネットで検索したが、明確な答えが見つからなかった。経験豊富なユーザーが私にヒントまたはより良い解決策を提供してくれれば幸いです。

19
ydoow

上記の問題の解決に関する最新情報を共有したいだけです。

私の場合、xcopyは、異なるドメインおよびサーバーの場所にあるサーバー間で10GBを超えるファイルをコピーできませんでした。

反対側では、robocopy

/zb-再起動モードを使用します。アクセスが拒否された場合、このオプションはバックアップモードを使用します。

正常にコピーできます。時間は1時間から2.5時間に増加しました。

-

サーバーを再配置した後、同じドメインおよびサーバーの場所にあるサーバー間でファイルがコピーされます。また、xcopyを使用しても問題ありません。

-

したがって、これに関する私の理論は、おそらくサーバー間の安定した接続に関するものでしょう。接続が堅牢でない場合(ドロップアウトが原因でアクセスの問題が発生する場合)、私の場合のように大きなファイルをコピーすると、長いプロセス中にいつでも破損が発生する可能性があります。 robocopy with restart and backupを使用すると、コピーをかなりうまく回復できます。回復に費やされる時間はおそらくマイナス面です。

余談ですが、ルーチンタスクになる場合は、コピーではなくFTPを使用する必要があります。

2
ydoow

バックアップモードは、権限の問題を無視してファイルを読み書きする方法です。

SeBackupPrivilege(読み取り)とSeRestorePrivilege(書き込み)を使用して、すべてのファイルを読み書きし、ファイルの読み取りまたは書き込みを妨げるACEを無視します。

通常、ファイルをコピーまたはアクセスしようとすると、Windowsは、場所への読み取りまたは書き込みの権限があることを確認するチェックを実行しますが、SeBackupPrivilege(Backup OperatorsグループとAdministratorsグループに付与)、およびSeRestorePrivilege(Backup OperatorsグループとAdministratorsグループにも付与されています)の場合、これらのチェックはバイパスされます。

アカウントにこれらの権限があるかどうかを確認するには、コマンドwhoami /privコマンドプロンプト。

12
Justin Krejcha

スナップショットを作成し、静止したファイルシステムをバックアップすることを強くお勧めします。その後、/ J(大きなファイルの場合はバッファリングされないI/O)を使用してrobocopyをすばやく実行できます。以下は、C:と呼ばれるC:のシャドウコピーを作成するためのスクリプトです。このドライブ(P :)は、バックアップに最適なC:ドライブの静的イメージです。この手法を使用して、アクティブな仮想マシンのディスクイメージをバックアップドライブにコピーします。

以下では、4つのスクリプトファイルを使用しています。

  • ディスクシャドウコマンドを実行するバッチファイル
  • 破壊するディスクシャドウコマンド ぶら下がりチャド 内部バッチファイルがクラッシュした場合の以前のシャドウ
  • シャドウをPとして作成する一連のディスクシャドウコマンド:
  • シャドウがアクティブなときに実行する一連のコマンド(P:がアクティブなときに実行される内部バッチファイル)

1)プロセスを開始するバッチファイル

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

2)以前アクティブだったシャドウを破棄するためのシャドウコマンドファイル "cleanup.cmds"

UNEXPOSE P:

3)シャドウを構築し、4番目のファイルを呼び出すシャドウコマンドファイル "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(およびおそらく他のバージョン)は、週に1日に2回シャドウコピーを実行することに注意してください。これにより、以下で作成されたシャドウコピーがクラッシュします。このバックアップ手法が、これらの自動スケジュールされたシャドウコマンドと重複しないことを確認してください。

2
erict

@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
0
InteXX