複数サイト(約500サイト)を運営していて、数千ページあるにわたる修正が必要になりました。修正内容も、全て一緒です。例えば、1,050が1,080に変更される感じです。
これを1つ1つ修正する作業ではなくて効率の良い方法は何かないでしょうか?どんなツールや技術が必要になってきますか?よろしくお願いします。
単にテキストの置換であるなら、フォルダの中身にあるファイルのテキストを一括置換できるソフト(例えばDreamweaver)を使えば良いと思うよ。おそらくフリーソフトでも似たようなのあるんじゃないかな。
一括置換ソフトで考えてみたいと思います。
その500サイトが、ワードプレスなどのcmsで作られているのか、ローカルに同じデータがあるhtmlなどで作られてるかによるね。後者なら、上のコメ主の言うようにドリでまとめて一括変換できる。前者だと一括変換する方法、俺わかんない
ファイルは、cmsではありません。レンタルサーバに上がっているものをダウンロードしてきて作業する感じです。
ぐれっぷ
検索だけじゃ意味ないじゃん
Dreamweaverですぐできる
これ
通常ありえない制作状況に対して、スパムサイトを連想してしまうのは俺だけなんだろうか
これは、どういう事でしょうか?
横レスすみません。スパムサイトじゃなくてもコーポレートサイト運営とかではよくある案件かと。自分もフォルダ指定とかでDWの置き換えをよく使います。
コメント、ありがとうございます。
へー。同じ運営者が500サイト運営ってよくあるんだね。へー。サイトの定義が違うんかな。たとえばさ、gmailにユーザー2人突っ込んだから2サイトとかそういうことなんだろうか。
クライアント数も、ほぼ同じ数だけいますので。
昔はコマンドライン上で find と awk でやってたけどね。昔すぎるか(笑)。今なら Perl でちょちょっと書けば済む。CMS だとしても DB に直接置換する SQL をぶち込みゃいい。
PHPなどで次のような動作のスクリプトを書いて1つのサーバで実行すればいい。- すべてのサーバのリストとFTPパスワードのリストを持つ- 対象箇所を置換する- 次のサーバに自分自身をFTPでアップロードする- そのスクリプトにアクセスして実行させる- すべてのサーバに伝播して処理が終われば終了善意のウィルスみたいなもんだね。500サイトでも寝てる間に完了するよ。
$ find . -type f | xargs sed -i "" "s/1050/1080/g"
で一発置換はどう?
置換された後の確認は、
$ find . -type f | xargs grep "1050"$ find . -type f | xargs grep "1080"
でどう?
何箇所あるのか知らないけど、チェック作業めんどいな。置換で他のところまで置換されたらだるいね。
チェック作業は、目視でやるか予定です。
情報が少なくてわかりにくいけど、500サイトは同一のサーバーなの?単純に負荷分散と同じだと考えればいい。ローカルのDBにサーバーの接続情報を入れる。プログラムで置換処理をループしてそのまま更新。今後保守していくものなら、共有部をAPIにしておいたり、jenkins等で一括デプロイできるようにするなりしたらいいんじゃないの?
同一サーバです。一部違うサーバもあります。
だったら更新頻度があるなら変数化したりAPIや外部モジュール、シンボリックリンクで扱うとかでもいい。一括置換はかなり危険だからローカルに落としてから一括置換してseleniumでエラーコードのあるビューがないかテストしてデプロイだな。
みんなの回答 10 件
単にテキストの置換であるなら、フォルダの中身にあるファイルのテキストを一括置換できるソフト(例えばDreamweaver)を使えば良いと思うよ。おそらくフリーソフトでも似たようなのあるんじゃないかな。
その500サイトが、ワードプレスなどのcmsで作られているのか、ローカルに同じデータがあるhtmlなどで作られてるかによるね。
後者なら、上のコメ主の言うようにドリでまとめて一括変換できる。
前者だと一括変換する方法、俺わかんない
ぐれっぷ
Dreamweaverですぐできる
通常ありえない制作状況に対して、スパムサイトを連想してしまうのは俺だけなんだろうか
昔はコマンドライン上で find と awk でやってたけどね。昔すぎるか(笑)。今なら Perl でちょちょっと書けば済む。CMS だとしても DB に直接置換する SQL をぶち込みゃいい。
PHPなどで次のような動作のスクリプトを書いて1つのサーバで実行すればいい。
- すべてのサーバのリストとFTPパスワードのリストを持つ
- 対象箇所を置換する
- 次のサーバに自分自身をFTPでアップロードする
- そのスクリプトにアクセスして実行させる
- すべてのサーバに伝播して処理が終われば終了
善意のウィルスみたいなもんだね。500サイトでも寝てる間に完了するよ。
$ find . -type f | xargs sed -i "" "s/1050/1080/g"
で一発置換はどう?
何箇所あるのか知らないけど、チェック作業めんどいな。
置換で他のところまで置換されたらだるいね。
情報が少なくてわかりにくいけど、500サイトは同一のサーバーなの?
単純に負荷分散と同じだと考えればいい。
ローカルのDBにサーバーの接続情報を入れる。プログラムで置換処理をループしてそのまま更新。
今後保守していくものなら、共有部をAPIにしておいたり、jenkins等で一括デプロイできるようにするなりしたらいいんじゃないの?
関連するトピックス