<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" its:version="1.0" type="topic" style="task" id="restore-worst-case" xml:lang="ja">
<info>
  <desc>ファイルを復元できない時にするべきこと</desc>
  <link type="guide" xref="index#restore"/>
</info>

<title>何をしても上手くいかない時</title>

<p><app>Déjà Dup</app> が正常に動作しないかもしれません。場合によっては、復元時にクラッシュしたりエラーが表示されるでしょう。データの復元がどうしても必要な場合は、最終的にバグとして対処しなければなりません。<link href="https://launchpad.net/deja-dup/+filebug">バグ報告する</link>ことを検討してください。その間に、ここでは <app>Déjà Dup</app> の不正な処理の回避策と、データを復旧するためのいくつかのアプローチを示します。</p>

<note><p>以下は技術的な内容です。よく分からない場合は<link xref="support">質問</link>してみてください。</p></note>

<steps>
  <item><p><keyseq><key>Ctrl</key><key>Alt</key><key>T</key></keyseq> を押して <app>端末</app> を開きます。</p></item>
  <item><p>復元したファイルを配置するディレクトリを作成します。この説明では <file its:translate="no">/tmp/restore</file> を使用します。</p>
<screen its:translate="no">mkdir -p /tmp/restore</screen></item>
</steps>

<section id="duplicity">
<title>Duplicity で復元する</title>

<p><app>Déjà Dup</app> があなたの環境で正常に動作していないと仮定して、コマンドラインツールの <app>duplicity</app> を使用します (<app>Déjà Dup</app> でファイルのバックアップと復元を行う際に背後で使用されているツールです)。</p>

<note style="advanced"><p>ここで提示したものよりも詳しい <app>duplicity</app> に関する情報が必要な場合は <cmd>man duplicity</cmd> を実行してください。</p></note>

<p>まず、すべてのデータの単純な復元を試みてみましょう。バックアップファイルが <file its:translate="no">/media/backup</file> にマウントされた外付けドライブにあり、バックアップ時に暗号化することを選択したと仮定した場合、次のようにコマンドを実行します。</p>
<screen its:translate="no">duplicity --gio file:///media/backup /tmp/restore</screen>

<p>バックアップを暗号化していない場合は、コマンドに <cmd its:translate="no">--no-encryption</cmd> オプションを追加します。</p>

<section id="locations">
<title>他のバックアップの保存場所</title>
<p>リモートサーバーまたはクラウドサーバーにバックアップした場合は、<app>duplicity</app> で使用する構文が上述の外付けドライブの例とは異なるものになります。選択したバックアップ先へ接続する方法については、後述の例を参照してください。</p>
<note><p>バックアップを暗号化していない場合は、各コマンド例に <cmd its:translate="no">--no-encryption</cmd> オプションを追加することを忘れないでください。</p></note>
<p><app>duplicity</app> でサーバーへ接続するのが困難だと思われる場合は、ローカルフォルダーに <app>duplicity</app> のすべてのファイルをダウンロードし、上述の例に従って復元してください。</p>
<terms>
  <item>
    <title>Amazon S3</title>
    <p>Amazon S3 の Access Key ID と Secret Access Key を調べて、下記の例の <var>ID</var> と <var>SECRET</var> をそれぞれ置き換えてください。</p>
    <p>バックアップファイルを置くフォルダーを指定していた場合は、下記の例の <var>FOLDER</var> をそのパスに置き換えてください。</p>
    <screen its:translate="no">
export AWS_ACCESS_KEY_ID=<var its:translate="yes">ID</var>
export AWS_SECRET_ACCESS_KEY=<var its:translate="yes">SECRET</var>
duplicity s3+http://deja-dup-auto-<var its:translate="yes">小文字のID</var>/<var its:translate="yes">FOLDER</var> /tmp/restore</screen>
  </item>
  <item>
    <title>Rackspace Cloud Files</title>
    <p>Rackspace のユーザー名と API Key を調べて、下記の例の <var>USERNAME</var> と <var>KEY</var> をそれぞれ置き換えてください。</p>
    <p>バックアップファイルを置くコンテナーを指定していた場合は、下記の例の <var>CONTAINER</var> をそのコンテナー名に置き換えてください。</p>
    <screen its:translate="no">
export CLOUDFILES_USERNAME=<var its:translate="yes">USERNAME</var>
export CLOUDFILES_APIKEY=<var its:translate="yes">KEY</var>
duplicity cf+http://<var its:translate="yes">CONTAINER</var> /tmp/restore</screen>
  </item>
  <item>
    <title>FTP</title>
    <p>サーバーのアドレス、ポート、ユーザー名、パスワードを調べて、下記の例の <var>SERVER</var>、<var>PORT</var>、<var>USERNAME</var>、<var>PASSWORD</var> をそれぞれ置き換えてください。</p>
    <p>バックアップファイルを置くフォルダーを指定していた場合は、下記の例の <var>FOLDER</var> をそのパスに置き換えてください。</p>
    <p>ユーザー名でログインしない場合は、<var>USERNAME</var> に <var its:translate="no">anonymous</var> を使用してください。</p>
    <screen its:translate="no">
gvfs-mount ftp://<var its:translate="yes">USERNAME</var>@<var its:translate="yes">SERVER</var>:<var its:translate="yes">PORT</var>/<var its:translate="yes">FOLDER</var>
duplicity --gio ftp://<var its:translate="yes">USERNAME</var>@<var its:translate="yes">SERVER</var>:<var its:translate="yes">PORT</var>/<var its:translate="yes">FOLDER</var> /tmp/restore</screen>
  </item>
  <item>
    <title>SSH</title>
    <p>サーバーのアドレス、ポート、ユーザー名、パスワードを調べて、下記の例の <var>SERVER</var>、<var>PORT</var>、<var>USERNAME</var>、<var>PASSWORD</var> をそれぞれ置き換えてください。</p>
    <p>バックアップファイルを置くフォルダーを指定していた場合は、下記の例の <var>FOLDER</var> をそのパスに置き換えてください。</p>
    <screen its:translate="no">
gvfs-mount ssh://<var its:translate="yes">USERNAME</var>@<var its:translate="yes">SERVER</var>:<var its:translate="yes">PORT</var>/<var its:translate="yes">FOLDER</var>
duplicity --gio ssh://<var its:translate="yes">USERNAME</var>@<var its:translate="yes">SERVER</var>:<var its:translate="yes">PORT</var>/<var its:translate="yes">FOLDER</var> /tmp/restore</screen>
  </item>
  <item>
    <title>WebDAV</title>
    <p>サーバーのアドレス、ポート、ユーザー名、パスワードを調べて、下記の例の <var>SERVER</var>、<var>PORT</var>、<var>USERNAME</var>、<var>PASSWORD</var> をそれぞれ置き換えてください。</p>
    <p>バックアップファイルを置くフォルダーを指定していた場合は、下記の例の <var>FOLDER</var> をそのパスに置き換えてください。</p>
    <p>バックアップを行う際にセキュアな接続 (HTTPS) を使用した場合は、下記の例の <var its:translate="no">dav://</var> を <var its:translate="no">davs://</var> に置き換えてください。</p>
    <screen its:translate="no">
gvfs-mount dav://<var its:translate="yes">USERNAME</var>@<var its:translate="yes">SERVER</var>:<var its:translate="yes">PORT</var>/<var its:translate="yes">FOLDER</var>
duplicity --gio dav://<var its:translate="yes">USERNAME</var>@<var its:translate="yes">SERVER</var>:<var its:translate="yes">PORT</var>/<var its:translate="yes">FOLDER</var> /tmp/restore</screen>
  </item>
  <item>
    <title>Windows 共有</title>
    <p>サーバーのアドレス、ユーザー名、パスワードを調べて、下記の例の <var>SERVER</var>、<var>USERNAME</var>、<var>PASSWORD</var> をそれぞれ置き換えてください。</p>
    <p>バックアップファイルを置くフォルダーを指定していた場合は、下記の例の <var>FOLDER</var> をそのパスに置き換えてください。</p>
    <p>Windows サーバーのドメインを指定していた場合は、<var>USERNAME</var> の前にドメインとセミコロンを追加して、<var>domain;username</var> という形式で使用してください。</p>
    <screen its:translate="no">
gvfs-mount smb://<var its:translate="yes">USERNAME</var>@<var its:translate="yes">SERVER</var>/<var its:translate="yes">FOLDER</var>
duplicity --gio smb://<var its:translate="yes">USERNAME</var>@<var its:translate="yes">SERVER</var>/<var its:translate="yes">FOLDER</var> /tmp/restore</screen>
  </item>
</terms>
</section>

</section>

<section id="by-hand">
<title>手動で復元する</title>

<p><app>duplicity</app> すら動作しないのでは、おそらく望みは薄いでしょう。バックアップファイルのフォーマットは複雑で、簡単に操作することはできません。しかし、どうしても復元したいのであれば、手動での復元に挑戦してみるといいかもしれません。</p>

<p>リモートサーバーまたはクラウドサーバーをバックアップ先として使用していた場合は、まずあなたのコンピューター上のフォルダーに、すべての <app>duplicity</app> ファイルをダウンロードします。次に端末でそのフォルダーに移動します。</p>

<p><app>Duplicity</app> はボリュームと呼ばれる小さなチャンクにデータを保存します。ボリュームは定期的に実行される「完全バックアップ」と、それ以外の「増分バックアップ」に分類されます。完全バックアップセットの最初のボリュームから順に、ボリュームごとにファイルを復元する必要があります。</p>

<p>バックアップする際に暗号化した場合は、先にボリュームを <cmd its:translate="no">gpg</cmd> コマンドで復号しなければなりません。例えば <file its:translate="no">duplicity-full.20110127T131352Z.vol1.difftar.gpg</file> というファイルの場合は以下のように実行します。</p>
<screen its:translate="no">gpg --output duplicity-full.20110127T131352Z.vol1.difftar --decrypt duplicity-full.20110127T131352Z.vol1.difftar.gpg</screen>

<p>一度に複数のファイルを復号するには以下のように実行します (ドライブに十分な空き領域があることを確認してください)。</p>
<screen its:translate="no">gpg --multifile --decrypt duplicity-full.20110127T131352Z.*.difftar.gpg</screen>

<p>上述の例のように復号した場合は <file its:translate="no">.difftar</file>、暗号化していなかった場合は <file its:translate="no">.difftar.gz</file> というファイルが手元にあるはずです。<cmd its:translate="no">tar</cmd> コマンドを使用して、それらのファイルを展開します。</p>
<screen its:translate="no">tar xf duplicity-full.20110127T131352Z.vol1.difftar</screen>

<p>一度に複数のファイルを展開するには以下のように実行します。</p>
<screen its:translate="no">for t in duplicity-full.20110127T131352Z.*.difftar; do tar xf $t; done</screen>

<p><file its:translate="no">multivolume_snapshot</file> フォルダーや <file its:translate="no">snapshot</file> フォルダーにデータが展開されるでしょう。複数のボリュームにまたがるファイルは <file its:translate="no">multivolume_snapshot</file> に展開されます。例えば <file its:translate="no">/home/jane/essay.txt</file> というファイルを結合するには、以下のように実行します。</p>
<screen its:translate="no">cd multivolume_snapshot/home/jane/essay.txt
cat * &gt; essay.txt</screen>

<p>増分バックアップからデータを復元するには、<cmd its:translate="no">rdiff</cmd> コマンドを使ってファイルを結合します。使用方法は <cmd its:translate="no">man rdiff</cmd> で確認してください。</p>

</section>

</page>
