PHPでCSVバックアップ機能を作る方法【サンプルコード付き】

php

PHPでCSVバックアップ機能を作る方法

PHPでCSVバックアップ機能を作る方法を紹介します。このサンプルでは、ボタンをクリックするだけで指定したCSVファイルのバックアップを作成できます。バックアップファイルは元のファイル名に日時を付与して保存されるため、更新前のデータ保護や誤操作への備え、定期的なバックアップを行いたい場合に便利です。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

CSVバックアップ
対象ファイル:data.csv

コードをコピーして使おう!

<?php

// バックアップ対象のCSVファイル名です
$csv_file = 'data.csv';

// バックアップ保存先フォルダ名です
$backup_dir = 'backup';

$message = '';

// バックアップフォルダが存在しない場合は自動で作成します
if (!is_dir($backup_dir)) {
    mkdir($backup_dir, 0777, true);
}

// バックアップボタンが押された場合の処理です
if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    // CSVファイルが存在するか確認します
    if (file_exists($csv_file)) {

        // バックアップファイル名を作成します
        $backup_file = $backup_dir . '/data_' . date('Ymd_His') . '.csv';

        // CSVファイルをコピーしてバックアップを作成します
        if (copy($csv_file, $backup_file)) {

            $message = basename($backup_file) . ' を作成しました。';

        } else {

            $message = 'バックアップの作成に失敗しました。';

        }

    } else {

        $message = 'data.csv が見つかりません。';

    }

}

?>

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>CSVバックアップ</title>

<style>
body{
    font-family:sans-serif;
    background:#f8fafc;
    margin:40px;
}

.php-csv-backup_wrap{
    max-width:700px;
    margin:0 auto;
    padding:24px;
    border:1px solid #e5e7eb;
    border-radius:18px;
    background:#ffffff;
}

.php-csv-backup_title{
    font-size:22px;
    font-weight:bold;
    margin-bottom:20px;
}

.php-csv-backup_file{
    margin-bottom:16px;
    padding:14px;
    border:1px solid #d1d5db;
    border-radius:12px;
    background:#ffffff;
}

.php-csv-backup_button{
    width:100%;
    height:46px;
    border:none;
    border-radius:10px;
    background:#0b6bff;
    color:#ffffff;
    font-weight:bold;
    cursor:pointer;
}

.php-csv-backup_result{
    margin-top:16px;
    padding:14px;
    border:1px solid #bbf7d0;
    border-radius:12px;
    background:#f0fdf4;
    color:#15803d;
}
</style>

</head>
<body>

<div class="php-csv-backup_wrap">

    <div class="php-csv-backup_title">
        CSVバックアップ
    </div>

    <div class="php-csv-backup_file">
        対象ファイル:data.csv
    </div>

    <form method="post">
        <button class="php-csv-backup_button" type="submit">
            CSVをバックアップする
        </button>
    </form>

    <?php if ($message !== ''): ?>
        <div class="php-csv-backup_result">
            <?= htmlspecialchars($message, ENT_QUOTES, 'UTF-8') ?>
        </div>
    <?php endif; ?>

</div>

</body>
</html>

ファイル構成と設置方法

このサンプルでは、index.phpdata.csv を同じフォルダに配置して使用します。バックアップファイルを保存する backup フォルダは、初回実行時に存在しない場合のみ自動で作成されます。

sample/
├── index.php
└── data.csv
(初回バックアップ実行後に自動作成)

sample/
├── index.php
├── data.csv
└── backup/
    └── data_20260610_112530.csv
  

index.phpdata.csv をサーバーへアップロードし、ブラウザから index.php にアクセスしてください。「CSVをバックアップする」をクリックすると、backup フォルダ内へ data_年月日_時分秒.csv の形式でバックアップファイルが作成されます。


コメント