次の方法で共有


バックアップ アプリケーションの作成

テープで入力または出力を実行するには、バックアップ アプリケーションが最初にテープ デバイスのハンドルを取得する必要があります。 次のコード サンプルは、CreateFile 関数を使用してテープ デバイスを開く方法を示しています。

HANDLE hTape;   // handle to tape device
 
hTape = CreateFile(TEXT("\\\\.\\TAPE0"),         // tape dev to open
                   GENERIC_READ | GENERIC_WRITE, // read/write access
                   0,                            // not used
                   0,                            // not used
                   OPEN_EXISTING,                // req for tape devs
                   0,                            // not used
                   NULL);                        // not used

ディレクトリ ツリーをテープにバックアップするには、アプリケーションで FindFirstFile を使用し、FindNextFile関数をしてディレクトリ ツリーを走査する必要があります。 ファイルが見つかるたびに、アプリケーションは、GetFileAttributes 関数を使用してファイル属性を取得する必要があります。

ハード リンクがある場合、アプリケーションはリンクの数を決定し、後で比較するためにファイルの一意識別子をテーブルに保存する必要があります。 ファイルが初めて見つかったら、アプリケーションは CreateFileを使用してファイルを開き、BackupRead関数使用してバックアップを開始する必要があります。 その後、WriteFile 関数を繰り返し使用して、BackupRead で使用されるバッファー内のすべての情報 テープに転送できます。 2 回目にファイルが見つかると (ハード リンクがある場合はファイル識別子のテーブルに対してチェックされます)、アプリケーションは一般的なファイル情報をテープに書き込み、その後に BACKUP_LINK識別子を持つストリームを書き込むことができます。

テープからディスクにファイルを復元する場合、アプリケーションでは、CreateFile、BackupWrite、ReadFile関数使用する必要があります。 テープ上の各ファイルについて、アプリケーションは CreateFile を使用してディスクに新しいファイルを作成し、BackupWrite してファイルの復元を開始する必要があります。 次に、すべてのファイル情報がテープから BackupWriteによってバッファーに読み込まれるまで、アプリケーションは ReadFile を繰り返し利用する必要があります。

BackupWrite バッファー内のいずれかのストリームに BACKUP_LINK ストリーム識別子がある場合、アプリケーションはハード リンクを確立する必要があります。 リンクを確立するために必要なデータが存在しない場合、BackupWrite 失敗します。 アプリケーションは、既存のカタログを使用して元のデータを見つけて復元したり、復元するファイル データが別の場所にあることをユーザーに通知したりできます。