シェルスクリプトを使って複数ディレクトリにファイルを一括コピーする方法

ウェブサイトの管理において、複数のディレクトリに共通のファイルを配置する必要がある場合、手動でファイルをコピーするのは面倒です。この記事では、シェルスクリプトを使って、複数のディレクトリに index.php ファイルを一括でコピーする方法を紹介します。

必要なもの

  • SSHアクセスが可能なサーバー
  • 基本的なシェルスクリプトの知識
  • index.php のテンプレートファイル

ステップ1: index.php のテンプレートファイルの作成

まず、共通の index.php テンプレートファイルを作成します。このファイルは、各サブドメインディレクトリにコピーされます。

<?php
require_once '../common/config.php';
?>

このファイルを /home/user/public_html/common/index.php.template として保存します。


ステップ2: シェルスクリプトの作成

次に、以下の内容でシェルスクリプトを作成します。このスクリプトは、リストされた各ディレクトリにテンプレートファイルを一括でコピーします。

#!/bin/bash

# ベースディレクトリの設定
BASE_DIR="/home/user/public_html"
TEMPLATE_FILE="$BASE_DIR/common/index.php.template"

# ディレクトリのリスト
DIRS=(
"subdomain1.example.com"
"subdomain2.example.com"
"subdomain3.example.com"
"subdomain4.example.com"
"subdomain5.example.com"
"subdomain6.example.com"
"subdomain7.example.com"
"subdomain8.example.com"
"subdomain9.example.com"
"subdomain10.example.com"
)

# 各ディレクトリにテンプレートファイルをコピー
for DIR in "${DIRS[@]}"; do
    TARGET_DIR="$BASE_DIR/$DIR"
    if [ -d "$TARGET_DIR" ]; then
        cp "$TEMPLATE_FILE" "$TARGET_DIR/index.php"
        echo "Copied index.php to $TARGET_DIR"
    else
        echo "Directory $TARGET_DIR does not exist"
    fi
done

このスクリプトを copy_index.sh として保存します。


ステップ3: スクリプトの実行

  1. 作成したスクリプトに実行権限を付与します。
chmod +x copy_index.sh
  1. スクリプトを実行します。
./copy_index.sh

スクリプトの結果

スクリプトを実行すると、各ディレクトリに index.php ファイルが一括でコピーされます。コピーされたディレクトリは、以下のように表示されます。

Copied index.php to /home/user/public_html/subdomain1.example.com
Copied index.php to /home/user/public_html/subdomain2.example.com
...

存在しないディレクトリについては、次のように表示されます。

Directory /home/user/public_html/some_nonexistent_directory does not exist

まとめ

この記事では、シェルスクリプトを使って複数のディレクトリに共通の index.php ファイルを一括でコピーする方法を紹介しました。この方法を使えば、手動でファイルをコピーする手間を省き、効率的に作業を行うことができます。

コメント

タイトルとURLをコピーしました