1. はじめに
日々の業務や個人開発でファイルを編集していると、「うっかり上書きしてしまった…」「元に戻せなくなった…」という経験はありませんか?
そんなトラブルを未然に防ぐのが、ファイルのバックアップを自動で作成する仕組みです。
Pythonを使えば、簡単なスクリプトで自動バックアップを実現できます。
この記事では、Pythonでファイルのバックアップを自動作成する方法を、初心者にも分かりやすく解説します。
具体的なコード例・応用例・注意点までカバーしているので、実務でもすぐに活用できます。
2. Pythonでファイルをコピーしてバックアップする基本
ファイルのコピーにはshutilモジュールが便利
Pythonでファイルを別名でコピーするには、shutil
モジュールを使います。
まずは基本的な使い方を確認しましょう。
import shutil
# 元ファイルのパス
original_file = "data.txt"
# バックアップファイルのパス
backup_file = "data_backup.txt"
# ファイルをコピー
shutil.copy2(original_file, backup_file)
print("バックアップを作成しました。")
実行結果:
バックアップを作成しました。
このように、shutil.copy2()
を使えば、元ファイルのメタデータ(タイムスタンプなど)も含めてコピーできます。
日付つきファイル名で管理する
複数回バックアップを取る場合、日付や時刻をファイル名に含めることで、履歴管理がしやすくなります。
import shutil
import datetime
original_file = "data.txt"
# 日付付きバックアップファイル名を生成
date_str = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
backup_file = f"data_backup_{date_str}.txt"
shutil.copy2(original_file, backup_file)
print(f"{backup_file} を作成しました。")
実行結果:
data_backup_20250719_093000.txt を作成しました。
3. 自動バックアップの応用例
特定フォルダ内のすべてのファイルを自動バックアップ
実務では、特定フォルダ内のファイルすべてを定期的にバックアップしたいこともあります。
以下の例では、フォルダ内のすべてのファイルを日付付きで別フォルダにコピーします。
import os
import shutil
import datetime
source_dir = "work_folder"
backup_root = "backup_folder"
# 日付フォルダを作成(例:backup_folder/20250719_093000)
date_str = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
backup_dir = os.path.join(backup_root, date_str)
os.makedirs(backup_dir, exist_ok=True)
# ファイルを1つずつコピー
for filename in os.listdir(source_dir):
source_path = os.path.join(source_dir, filename)
if os.path.isfile(source_path):
dest_path = os.path.join(backup_dir, filename)
shutil.copy2(source_path, dest_path)
print(f"{source_dir} のファイルを {backup_dir} にバックアップしました。")
実行結果:
work_folder のファイルを backup_folder/20250719_093000 にバックアップしました。
スケジューラーと組み合わせて定期実行
Python単体ではスケジュール実行はできませんが、Windowsなら「タスクスケジューラ」、Mac/Linuxなら「cron」と連携すれば、毎朝自動でバックアップなども可能です。
Pythonスクリプトを「.py」ファイルで保存し、タスクに登録して使いましょう。
4. 注意点・エラー対策
ファイルが存在しない場合のエラーハンドリング
バックアップ元のファイルが存在しない場合、エラーになります。以下のようにos.path.exists()
を使って確認してから処理を行いましょう。
import os
import shutil
original_file = "data.txt"
backup_file = "data_backup.txt"
if os.path.exists(original_file):
shutil.copy2(original_file, backup_file)
print("バックアップ完了")
else:
print("元ファイルが存在しません")
実行結果:
元ファイルが存在しません
ファイルが大きい・多数ある場合の注意
大量のファイルをバックアップする場合、次の点に注意しましょう。
- バックアップ先のディスク容量を確認する
- バックアップ頻度を調整する(1時間ごと/1日1回など)
- 必要に応じてZIP圧縮などで容量削減を検討する
5. まとめ
今回は、Pythonを使ってファイルのバックアップを自動で作成する方法について解説しました。
shutil.copy2()
でファイルをコピーできる- 日付付きのファイル名で履歴管理がしやすくなる
- フォルダ全体のバックアップにも応用できる
- スケジューラーと組み合わせれば定期バックアップも可能
バックアップは「備えあれば憂いなし」の基本です。
Pythonを使えば手軽に自動化できるので、業務効率化やトラブル対策にぜひ取り入れてみてください。