■■■■■■■■■■■■■■■■
backup.exe  restore.exe の説明書
■■■■■■■■■■■■■■■■


●目的●
・内臓HDDのデータをUSBメモリや外付けHDDにバックアップする
・USBメモリや外付けHDDを使って複数PCのフォルダの内容を同じにする
・システムの無いHDDの内容をシステムの無い別HDDにバックアップする


●特徴●
・2回目以降のバックアップは、新しいものだけを転送するので短時間ですむ
・フォルダやファイルの情報がディスクの外周に集中するので、
 2回目以降のバックアップでHDDのヘッドの動きを小さくできる
・複数の内臓HDDを1つのHDDへまとめてバックアップできる
・日付の古いファイルを新しいファイルへ上書きしようとするとするとスキップする
 したがって、間違えて反対方向へバックアップしても日付の新しいファイルは残る


●簡単な使用方法の例●

説明に使うパソコンの例:

 A:    フロッピーディスクドライブ
 C:    システムの入っている内蔵HDD
 D:    システムの無い内臓HDD
 E:    DVD−ROM
 F:以降  外付けHDD、または、USBメモリ(以降、外付け記憶装置と呼ぶ)
  
 OS    WindowsXP
 ユーザー名 isaku


【1】初めてC:のマイドキュメントをF:にバックアップする場合

  @F:に外付け記憶装置を接続する
  Aどこかにある backup.exe をダブルクリックして起動する
  B転送先ディスクを〜(数記号で終了)"F:">  と表示される
  CキーボードのFを押すか、[ENTER]を押すか、マウスを左クリックする
   ( "D:"> のように意図しないドライブ文字が表示された場合は、
        必ずキーボードのFを押して変更すること)
  D初めてなので F:\backup.txt が無く、フォルダが未登録の状態になっている
  Eマイドキュメントを追加登録するためにキーボードのAを押す
  F「転送元フォルダ選択」ダイアログボックスが現れるので、
    ローカルディスク (C:) → Documents and Settings →
        isaku(※ユーザー名) → My Documents を選んで「OK」を押す
		すると、F:\backup.txt が作成され、そこにマイドキュメントが登録される
  Gキーボードの[ENTER]を押すか、マウスを左クリックする
   ・作業が始まり mkdir 〜 と mark 〜 がまず実行され、
    空ファイルが作成される
   ・その後、new file 〜 でファイルが転送される
    このとき、残り時間の目安がタイトルバーに表示される
  H繰り返すかどうか聞いてくるので、キーボードの[ENTER]を押すか、
   マウスの左クリックをして、終了する


【2】以前に backup.exe でバックアップした外付け記憶装置を更新する

  @【1】の@〜Cまで同じ
  AF:\backup.txt が読まれ、転送元フォルダが登録されているのを確認する
  Bキーボードの[ENTER]を押すか、マウスを左クリックして作業が始まる
   ・マイドキュメントに新しいフォルダやファイルがあれば
    mkdir 〜 や mark 〜 が実行され、空ファイルが作成される
   ・その後、
    ・mark 〜 に対応したファイルは new file 〜 として転送される
    ・変更されたファイルに対しては overwrite 〜 として転送される
    ・変更されていないファイルは、そのまま無視される
    ・転送先のファイルのほうが更新された場合は skip old 〜 と表示され、
     コピーは行われない。
   ・マイドキュメントで削除していて、転送先に残っているファイルがあれば、
    削除候補として表示され、削除するかどうかを聞いてくる。
    ここで「Yes」を押すと、それらは削除される。
  C繰り返すかどうか聞いてくるので、キーボードの[ENTER]を押すか、
   マウスの左クリックをして、終了する


【3】パソコン(甲)のマイドキュメントの内容を、別のパソコン(乙)に転送する

  @甲で【1】か【2】を行い、マイドキュメントを外付け記憶装置に転送する
  A乙に外付け記憶装置を接続して restore.exe を実行し指示に従って転送する


【4】Dドライブ全体をFドライブへバックアップする

  @backup.exe を起動する
  AFドライブを転送先に指定する
  B転送元フォルダとしてDドライブのルートを登録する
  C実行する


●転送元として直接指定するのが好ましくないフォルダ●

  @C:\Windows
  BC:\Documents and Settings
  AC:\Program Files


●その他の機能の説明●

【無視拡張子】この拡張子を持つファイルは、コピーや削除の対象から外れます
【限定拡張子】この拡張子を持つファイルのみ、コピーや削除の対象になります
 ※無視拡張子または限定拡張子の入力で、何で指定せずに[ENTER]を押すと、
  条件が解除され、すべての拡張子が対象になります。
 ※以前は txt や html のように '.' を含まないものを指定すると '.'
    を補って拡張子とみなしましたが、現在は .txt や .html のように
  指定します。
    例えば .txt のように指定すると、プログラムは単純に後ろの4文字が
    .txt に一致したときに無視したり、限定したりします。
    単純に後方いっちしたときだけ条件が成立するので、
    '\readme.txt' のように指定すると、特定の名前のファイルを
    例外扱いできます。


【backup.txt】

  外付け記憶装置のルートに自動的に作成される設定ファイル backup.txt を
  直接編集するとフォルダだけでなく、ファイルやワイルドカードも指定できます

  また、backup.txt 自身はコピーや削除の対象になりません


【システムファイル・隠しファイル】
  システムファイルや隠しファイルはコピーや削除の対象とはなりません。
  ただし、Thumbs.db はシステムファイルであっても、削除される場合があります


【読み取り専用ファイル】
  読み取り専用ファイルであっても、強制的にコピーしたり削除したりします。

【メモリの使用状況】
    メニューで[SPACE]キーを押すとメモリの使用状況を表示します

【コピーの中断】
コピーの実行中にキー入力するか、ウィンドウ上でマウスを左クリックすると
コピーを中断できます。
(ただし、巨大なファイルをコピー中場合、
そのファイルのコピーが終了するまで中断はできません)

【ネットワークドライブ】
Ver.2 では、ネットワークドライブに .profile のように
ピリオドで始まるファイルをバックアップ・リストアすると不具合が生じました。
Ver.3 ではピリオドで始まるファイルの隠し属性を無視して、
通常のファイルとして扱います。
メールソフトのサンダーバードや教育ソフトのジャストスマイルの設定を
バックアップするためにこの機能を加えました。
(ubuntu の設定ファイルにもピリオドで始まるファイルがあります)

Ver 3.1 では netuse.txt ファイルにネットワークドライブを
登録していましたが、 Ver 3.2 では必要なくなりました。

【複数のbackup.txt】
Ver.3 ではコマンドオプションにに -0 -1 -2 ... -9 , -A -B ... -Z のように指定すると
backup.txt の代わりに backup0.txt backup1.txt ... backupZ.txt を読みます。
この機能は一つの外付け記憶装置で、ドライブ構成や容量の異なる複数のPCの同期を
とるために加えました。

【途中経過の表示の省略】
コマンドオプションに -fast を指定すると、検索中のフォルダを表示する代わりに、
くるくる回る文字を表示することで高速化できます。
Windows 7 の文字表示が極端に遅いのでこの機能を加えました。

※コマンドオプションは backup.exe と restore.exe のショートカットを
デスクトップなどに作り、
ショートカットを右クリックしてプロパティを出し、「リンク先(T):」に
"C;\ ... \backup.exe" -2 -fast
のようにコマンドオプションを加えれば、タイプして指定せずにすみます。

【自分自身を一時フォルダへコピー】
Ver.2 では、古い restore.exe を起動して新しいものを上書きしようとすると、
失敗していました。Ver.3 では restore.exe をいったん、テンポラリフォルダへ
コピーし、それを実行することで、このエラーを回避しました。
また、この改良に伴い、Vista で backup.exe , restore.exe のタイトルバーに、
残り時間が表示されない現象も回避できたので、Vista で小さなウィンドウを
表示していたのをやめました。

一時フォルダーは XP ならば
C:\Documents and Settings\ユーザ名\Local Settings\Temp\isaku
です。ノートンのウイルス対策ソフトの場合、ソナーがプログラムを
消してしまうので、このフォルダーをソナーの例外フォルダに設定して
ください。


●失敗して途中で終わったあと、残った大量の空のファイルを削除する方法●

二つ方法があります。

・大きさが0のファイルを検索して削除する。

・日付の古いファイルを削除する
  @ドライブやフォルダのアイコンを右クリックし、「検索...」を選ぶ
  A「いつ変更されましたか?」をクリックする
  B「日付指定」を選択する
  C「日付:」、「から」の両方に 1982/01/01と設定して「検索」を押す
  D「編集」「すべて選択」を選んだあと、「ファイル」「削除」を選ぶ

●backup.exe と backup95.exe の違い●

NT/2000/XP/Vista は 95/98/Me と違い UNICODE をサポートしています。
backup.exe は UNICODE で処理しているので、95/98/Me では動きません。
一方 backup95.exe は全て Shift-JIS で処理しているので 95/98/Me でも
動きます。その代わりに、backup95.exe は Shift-JIS 以外の特殊な UNICODE
文字を含む名前のファイルを処理することができません。
ただし、backup.exe でもファイル名を画面に表示するときには
Shift-JIS を使っているので、実際には正しくコピーが行われていても、
特殊な UNICODE 文字は画面には'?'と表示されます。

また、数万個以上のファイルをコピーする場合、
backup.exe は backup95.exe よりも、メモリを1.5倍くらい消費するので、
メモリに余裕の無いPCでは、backup95.exe の方が速くなる可能性があります。
逆に NT/2000/XP/Vista でメモリに余裕がある場合は、OSが UNICODE で動作
しているので backup95.exe の方が少し遅くなります。

restore.exe と restore95.exe の違いも同様です。

--------------------------------------------------------------------
●「hello.exe が 1024 byte になるツール」を使ってビルドする方法●

このホームページのトップに「hello.exe が 1024 byte になるツール」があるので、
それを読んで build1.exe と build2.exe と n.exe を作成する。
コマンドラインから
  build2 -u backup.c
  build2 -u restore.c
を行ってビルドすると、小さな backup.exe と restore.exe ができる
     

●ビルド用付属バッチファイル●

・MakeBld2.bat   : 「hello.exe が 1024 byte になるツール」用
・MakeBcc.bat    : Borland C++ 用
・Make2010.bat   : Visual C++ 2010 用

●Microsoft Visual C++ 2008 でプロジェクトを使ってビルドする方法●

[ファイル]→[新規作成]→[プロジェクト]を選んで、
[VisualC++]→[Win32]→[Win32コンソールアプリケーション]を選び、
プロジェクト名を "<名前を入力してください>" から
"backup" へ変更する。

[ソリューションのディレクトリを作成]の
チェックボックスがONになっていたらOFFにする。
[OK]を押してプロジェクトを作成する。

Win32アプリケーション ウィザード で左側の
「アプリケーションの設定」タブを開き、
追加のオプションとして、「空のプロジェクト」にチェックを入れて、
「完了」ボタンを押す。

最小化して、新しく作成された backup フォルダに
backup.c、backup.rc、backup.ico、common.c をコピーする。

最大化して、ソリューションエクスプローラの2行目 backup を
クリックして選択する。

[プロジェクト]→[既存項目の追加]で backup.c をダブルクリックする。
[プロジェクト]→[既存項目の追加]で backup.rc をダブルクリックする。
[ビルド]→[構成マネージャ]で[アクティブソリューション構成]を
Releaseにして[閉じる]を押す。

[構成プロパティ]の[C/C++]→[コード生成]クリックする。
[ランタイム ライブラリ]を[マルチスレッド(/MT)]に変更する。
[OK]を押す。

続いて[ビルド]→[ソリューションのビルド]を選ぶと完成。

--------------------------------------------------------------------