ウェブサイトの管理において、複数のディレクトリに共通のファイルを配置する必要がある場合、手動でファイルをコピーするのは面倒です。この記事では、シェルスクリプトを使って、複数のディレクトリに 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: スクリプトの実行
- 作成したスクリプトに実行権限を付与します。
chmod +x copy_index.sh
- スクリプトを実行します。
./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
ファイルを一括でコピーする方法を紹介しました。この方法を使えば、手動でファイルをコピーする手間を省き、効率的に作業を行うことができます。
コメント