見出し画像

【ファイル操作】バックアップ自動化ツール サンプルコード

・業務効率化には何すればいいのかな?
・Pythonで自動化ツールを作成できると聞くけど、具体的に何が作れるの?
・自動化のアイデアが出てこない

こんな悩みを抱えている人に向けて、Pythonで作れる自動化ツールを解説しています。

ファイル操作のツールについて、こちらの記事で紹介しています。
 ⇒【ファイル操作】Pythonで作れる自動化ツールの具体例アイデア9選【業務効率化】

本記事では、バックアップ自動化ツールのサンプルコードを公開しています。

サンプルコードは、自分で作成するのが難しい方や、ツール作成の手間を減らしたい方にお勧めです。ぜひご活用ください。

【関連記事】
【業務効率化】Pythonで作れる自動化ツール具体例・アイデア53選!
【Pythonで業務効率化】自動化ツールを自作する方法を5STEPで解説!



アイデア「バックアップ自動化ツール」

概要

指定されたディレクトリの内容を定期的にバックアップします。

導入メリット

データの損失リスクを減らし、安心して業務を進めることができます。

ツール機能

ユーザーが指定したディレクトリのファイルを、定期的に別の場所にコピーしてバックアップします。

必要技術

os、shutil:ファイル操作を行う

schedule:バックアップのスケジューリングを行う

処理フロー

  1. バックアップ対象のディレクトリを指定

  2. バックアップ先のパスを指定

  3. バックアップの頻度(日次、週次など)を設定

  4. 指定したスケジュールに従ってバックアップを自動実行

  5. バックアップの完了通知をユーザーに送信


注意事項

著作権について

本ソースコードの著作権は、販売者に帰属します。
修正や改変は自由に行えますが、無断での複製、配布は法律で禁止されています。

ライセンスについて

本ソースコードは、個人利用及び商用利用が可能です。ただし、再販売や、本ソースコードを基にした派生作品の販売は禁止します。

返金について

デジタルコンテンツの性質上、購入後の返品や返金は原則として受け付けておりません。

使用上の免責事項

本ソースコードは予告なく変更や修正を行う場合があります。
本ソースコードの動作を保証するものではありません。
本ソースコードの使用から生じたいかなる直接的または間接的な損害に対しても、販売者は責任を負いません。
動作の不具合については、購入者自身の責任で対処してください。

サポートについて

本ソースコードに関するサポートは行っておりません。バグ報告や質問への対応は致しかねます。


ソースコード

import os
import shutil
import schedule
import time
from datetime import datetime

def backup_files(source_dir, backup_dir):
    """
    指定されたディレクトリから別のディレクトリにファイルをコピーしてバックアップします。
    バックアップは日付と時間を名前に含む新しいフォルダに保存されます。
    """
    # 現在の日時を取得し、フォルダ名を生成
    current_time = datetime.now()
    folder_name = current_time.strftime('%Y%m%d_%H%M%S')
    backup_folder = os.path.join(backup_dir, folder_name)

    # バックアップ先のフォルダを作成
    if not os.path.exists(backup_folder):
        os.makedirs(backup_folder)
    
    # ソースディレクトリ内の各ファイル/フォルダをバックアップ先にコピー
    try:
        for item in os.listdir(source_dir):
            source_path = os.path.join(source_dir, item)
            backup_path = os.path.join(backup_folder, item)
            if os.path.isdir(source_path):
                shutil.copytree(source_path, backup_path, dirs_exist_ok=True)
            else:
                shutil.copy2(source_path, backup_path)
        print(f"{datetime.now()}にバックアップが完了しました。")
    except Exception as e:
        print(f"バックアップ中にエラーが発生しました: {e}")

def main():
    """
    メイン関数:ユーザー入力を受け取り、バックアップのスケジューリングを行います。
    """
    source_dir = input("バックアップするディレクトリのパスを入力してください: ")
    backup_dir = input("バックアップ先のディレクトリのパスを入力してください: ")
    frequency = input("バックアップの頻度(daily, weekly)を入力してください: ")
    
    # 入力された頻度に基づいてバックアップのスケジュールを設定
    if frequency == 'daily':
        schedule.every().day.at("01:00").do(backup_files, source_dir=source_dir, backup_dir=backup_dir)
    elif frequency == 'weekly':
        schedule.every().week.at("01:00").do(backup_files, source_dir=source_dir, backup_dir=backup_dir)
    
    print("バックアップスケジュールを設定しました。バックアップは自動で行われます。")
    
    # スケジューラを起動し、設定されたタスクを定期的に実行
    while True:
        schedule.run_pending()
        time.sleep(1)

if __name__ == "__main__":
    main()

最後まで読んでいただき、ありがとうございました!
参考のなったと思っていただけたら、
♡スキを押していただけると嬉しいです。

今後もサンプルコードを紹介する予定なので、
関心のある方は是非アカウントのフォローをお願いします!

この記事が気に入ったらサポートをしてみませんか?