認識しなくなった1TBの外付けポータブルHDD(BUFFALO HD-PCFU3)から、無料ツールとPythonスクリプトを駆使してデータを救出し、年・月別のフォルダへ綺麗に整理・バックアップするまでの全工程をまとめました。
同じように「ファイルシステムがRAWになった」「パラメータが間違っています」「エクスプローラーが固まる」といった症状に悩んでいる方の参考になれば幸いです。
1. 発生した障害の症状と原因分析
長年使用していた外付けHDD(HD-PCFU3)を接続したところ、以下の深刻な症状が発生しました。
- エクスプローラーでドライブを開こうとするとフリーズ・応答なしになる。
- プロパティを開くとファイルシステムが「RAW」と表示され、アクセスできない。
- 「パラメータが間違っています」または「ファイルまたはディレクトリが破損しているため、読み込むことができません」エラーが発生。
- TestDiskで解析を試みるも
Can't open filesystemと表示され、ディレクトリ構造(MFT / 目次情報)が崩壊していることが判明。
2. データ救出の全体手順(トラブルシューティング)
手順①:セーフモードによるI/Oハングの回避
通常モードのWindowsでは、壊れたHDDの読み込み待ちによってシステム全体がフリーズして作業になりません。まずはWindowsを「セーフモード」で起動し、バックグラウンドの不要なI/O干渉をシャットアウトしました。
手順②:長時間のスキャンに備えた電源設定(コマンド処理)
1TBの全セクタスキャンには半日以上かかるため、セーフモード下のコマンドプロンプトでPCがスリープに入らないよう無効化しました。ここは予めスリープ時間を設定しておけばこのコマンド実行は不要です。
powercfg /change standby-timeout-ac 0
powercfg /change monitor-timeout-ac 0
手順③:QPhotoRecによる全セクタからのデータ直接抽出
ファイルシステムの目次が崩壊しているため、セクタから直接ファイルのシグネチャ(JPG、MP4、PDF等)を検出して救出するPhotoRec(QPhotoRec)を使用しました。注意点として、ファイル名の復元はこのソフトウェアでは出来ません。このソフトウェアでは単純なファイルの復元を行います。以下からexeファイル等をダウンロードします。
qphotorec_win.exeを「管理者として実行」。

-
QPhotoRecを起動したら、上から順に以下の4つの項目を設定。
-
復元元のディスク選択(最上段のドロップダウン)
-
パーティション(リスト領域)の選択
-
設定内容:
[Whole disk](ディスク全体)を選択します。
-
-
ファイルシステムの種類・スキャン範囲の選択(中央部)
-
ファイルシステムの種類:
FAT/NTFS/HFS+/ReiserFS/...(下側のラジオボタン)を選択。-
※Windowsで利用していた外付けHDD(NTFS)の場合はこちらを選びます。
-
-
スキャン範囲:
すべて: すべてのパーティションからファイルを抽出する(下側のラジオボタン)を選択。-
※未割り当て領域だけでなく、ディスク全体からシグネチャ検索を行います。
-
-
-
復元したファイルの保存先指定(右下の「参照」ボタン)
-
設定内容: 「参照」 ボタンを押し、救出データの保存先フォルダ(Cドライブ直下の英数字フォルダなど)を指定します。
-
注意点: トラブル防止(「File creation failed」エラー回避)のため、復元元である外付けHDD以外の場所(内蔵Cドライブなど) を選択し、フォルダ名に日本語を含めないようにします。
-
-
- 全セクタのスキャンを実行し、無事に全ファイルの抽出に成功。
セーフモード下で「指定されたフィルターが見つかりませんでした」というダイアログが出る場合があります。これはWindowsの描画・ダイアログ関連機能が制限されているためで、裏でスキャン(セクター数のカウント)が進んでいれば問題ありません。通常起動に戻すことで解消します。
3. Pythonスクリプトによるバラバラなファイルの撮影日自動分類
PhotoRecで救出したファイルは、元のフォルダ構造やファイル名が失われ、recup_dir.1 などのフォルダに f123456.jpg のような名前でランダムに保存されます。
これを画像データのExif情報(撮影日時)およびファイルの最終更新日時をもとに、2025-10 のような「年-月」ごとのフォルダへ自動分類するPythonスクリプトを作成・実行しました。
import os
import shutil
from datetime import datetime
SOURCE_DIR = r"C:\Recovery\recup_dirs"
DEST_DIR = r"C:\Recovery\Sorted_Files"
UNKNOWN_DIR_NAME = "unknown_date"
EXIF_EXTENSIONS = {".jpg", ".jpeg", ".tiff"}
def get_shooting_date(file_path):
ext = os.path.splitext(file_path)[1].lower()
if ext in EXIF_EXTENSIONS:
try:
with open(file_path, "rb") as f:
data = f.read(65536)
pos = data.find(b"\x03\x90")
if pos != -1 and pos + 20 < len(data):
date_str = data[pos + 4 : pos + 23].decode("ascii", errors="ignore")
return datetime.strptime(date_str, "%Y:%m:%d %H:%M:%S")
except Exception:
pass
try:
timestamp = os.path.getmtime(file_path)
return datetime.fromtimestamp(timestamp)
except Exception:
pass
return None
def organize_files():
if not os.path.exists(SOURCE_DIR):
print(f"[エラー] 移行元が見つかりません: {SOURCE_DIR}")
return
if not os.path.exists(DEST_DIR):
os.makedirs(DEST_DIR)
file_count = 0
success_count = 0
for root, _, files in os.walk(SOURCE_DIR):
for filename in files:
file_path = os.path.join(root, filename)
if os.path.isdir(file_path):
continue
file_count += 1
dt = get_shooting_date(file_path)
folder_name = dt.strftime("%Y-%m") if dt else UNKNOWN_DIR_NAME
target_folder = os.path.join(DEST_DIR, folder_name)
if not os.path.exists(target_folder):
os.makedirs(target_folder)
dest_path = os.path.join(target_folder, filename)
base, ext = os.path.splitext(filename)
counter = 1
while os.path.exists(dest_path):
dest_path = os.path.join(target_folder, f"{base}_{counter}{ext}")
counter += 1
try:
shutil.copy2(file_path, dest_path)
success_count += 1
except Exception as e:
print(f"[失敗] {filename}: {e}")
print(f"完了: {success_count} / {file_count} ファイルを整理しました。")
if __name__ == "__main__":
organize_files()
4. クラウド保存・共有・注意点(まとめ)
① クラウドへのバックアップ運用
- 写真・動画メインの場合: 「Googleフォト」へアップロードするのが最も便利です。Googleフォト側でExifを自動認識するため、タイムライン順に綺麗に整頓されます。
- ファイル全体・ドキュメントの場合: 「パソコン版 Google ドライブ」アプリをインストールし、Pythonで整理した「年-月」フォルダごと同期させるのが安全です。
② 一時的な受け渡し(ギガファイル便)の注意点
一時的に他人にデータを渡したい場合は「ギガファイル便」も活用できますが、画面上での写真プレビュー(サムネイル確認)はできません。必ず事前に手元で中身を確認し、ダウンロードパスワードの設定および保持期間の短縮設定を行って安全に運用しましょう。
③ 復元された .db や .info ファイルについて
救出データ内に含まれる Thumbs.db や .info ファイルは、OSやアプリが作成したサムネイルキャッシュや管理用データベースです。画像や文書データそのものではないため、データ救出後は不要であれば削除してしまって問題ありません。


































