
[Python]定期的にフォルダバックアップをするプログラムを作ってみた
毎日のように更新しているフォルダを定期的に自動でバックアップしたくて作りました。
今回はPC内のフォルダを外付けHDDにバックアップしています。
作業作業環境
Winodws11
Python3.10
Visual Studio Code
大まかな流れ
Pythonでコードを書く
Windowsのタスクスケジューラーに登録する
まずPythonでコードを書いていきます
最新のフォルダをバックアップするだけの場合
import os
import shutil
dir_fr_work = 'C:/work' #コピーするフォルダ
dir_to_work = 'E:/BackupFromPC/work' #コピー先のフォルダ
if os.path.exists(dir_to_work):
shutil.rmtree(dir_to_work)
shutil.copytree(dir_fr_work, dir_to_work)
1,2行目で使用するライブラリをインポートします。
7,8行目で同名のフォルダがある場合は削除します。
10行目で最新のフォルダをバックアップします。
フォルダに日付をつけてバックアップし履歴管理する場合
フォルダに日付をつけてバックアップするときの書き方です。
import os
import shutil
import datetime
dir_fr_work = 'C:/work' #コピーするフォルダ
dir_to_work = 'E:/BackupFromPC/work' #コピー先のフォルダ
today = datetime.datetime.now()
today_yyyymm = today.strftime('%Y%m%d') #現在日付yyyymmdd取得
dir_to_work = dir_to_work + today_yyyymmdd
shutil.copytree(dir_fr_work, dir_to_work)
1~3行目で使用するライブラリをインポートします。
8~10行目でコピー先のフォルダの名前に日付をつけます。
12行目でフォルダをバックアップします。
月1回フォルダをバックアップして残しておく場合
Windowsのタスクスケジューラーへの登録の際にタスク実行頻度を月1回に設定すればいいのですが、他の毎日タスクのプログラムに混ぜて書くときは、同じ月のフォルダがなかったらバックアップするという書き方をします。
import os
import shutil
import datetime
dir_fr_work = 'C:/work' #コピーするフォルダ
dir_to_work = 'E:/BackupFromPC/work' #コピー先のフォルダ
today = datetime.datetime.now()
today_yyyymm = today.strftime('%Y%m') #現在日付yyyymm取得
dir_to_work = dir_to_work + today_yyyymm
if os.path.exists(dir_to_work )== False:
shutil.copytree(dir_fr_work , dir_to_work )
8~10行目でバックアップ先フォルダに年月(yyyymm)の数字を付与します。
12,13行目で、同じ名前(年月)のフォルダがなかったらバックアップするようにしています。
Windowsのタスクスケジューラーに登録する
まずWindowsのタスクスケジューラーを起動します。
windowsのタスクバーの検索(虫眼鏡のアイコン)から「タスクスケジューラ」と入力します。すると検索結果に表示されますので、クリックして「タスクスケジューラー」を開いてください。

「基本タスクの作成」をクリックします。

Windowsのタスク スケジューラー
「基本タスクの作成」というウィンドウが表示されます。名前、説明を書いて「次へ」をクリックします。

「タスクトリガー」ウィンドウが表示されますので、自分の好きなタスクの実行タイミングを選択して「次へ」に進みます。
「操作」ウィンドウが開きます。

「プログラムの開始」を選択して次に進みます。
「プログラムの開始」ウィンドウが開きます。

次のように設定します。
「プログラム/スクリプト」:Pythonのパス
※Pythonのパスが分からない場合は、Windows11のコマンドプロンプトを開いて Where python とコマンドを打ってください。Pythonのパスが表示されます。

「開始(オプション)」:実行したいPythonのプログラムが置かれているフォルダのパス
「引数の追加(オプション)」:実行したいPythonのプログラムファイルの名前
今回私は「C:\workspace\python backup」にある「filebackup.py」というプログラムを登録しました。
最後に「要約」ウィンドウが表示されるので、内容を確認して「完了」します。
以上です。想像したより簡単だったのではないでしょうか