mysqlユーザー名、パスワード、データベース名を保存するために別々のファイルが必要です

mysqlユーザー名、パスワード、データベース名を保存するために別々のファイルが必要です

MySQLデータベースをダンプしてファイルを圧縮するスクリプトがあります。私が望むのは、ユーザー名、パスワード、およびデータベース名を変更できる別の(編集)ファイルを持つことです。次に、そのファイルをスクリプトにリンクします。

他のファイルでは、例えばいくつかのコンテンツが欲しい。

username =  "username"
password = "password"
database = c2duo_db

その後、スクリプト名にMySQLバックアップ.sh一部はファイルからユーザー名、パスワード、データベースを取得します。

#!/bin/sh

mysqldump -u"username" -p"password" --opt c2duo_db > /home/sh/c2duo_db-`date +%d%m%Y`.sql

cd /home/sh
tar -zcvf c2duo_db-`date +%d%m%Y`.tar.gz  *.sql

答え1

source他のファイルの内容を現在のシェル環境(あなたのスクリプトの場合)にインポートして実行する次のコマンドを使用すると、簡単にこれを行うことができます。

存在するdb.conf

username="username"
password="password"
database="database"

スクリプトから:

#!/bin/sh

source /path/to/db.conf
cd /home/sh
dumpfile_name=$database-$(date +%d%m%Y).sql

mysqldump -u"$username" -p"$password" --opt "$database" > $dumpfile_name
gzip $dumpfile_name

メモ:

  • =シェル変数を割り当てるときは、割り当て演算子の後にスペースを追加しないでください。
  • あなたのコードを整理するためにいくつかのことをしました。私はあなたのように単一のtarファイルに新しいダンプを追加しませんでした。単一のファイルを圧縮する方法を紹介します。 1つのアーカイブにすべて含まれるようにパッケージ化したい場合でも、これを行うことができますが、別々の圧縮ダンプファイルが非常に役に立つと思います。
  • 現在のディレクトリなので、出力ファイルへのパスを指定する必要がないように、cdコマンドの前にジョブを移動しました。mysqldump重複したコードを保存するだけです。

編集する:このステップが完了したにもかかわらず、これは私が時期尚早の解決策のように見えます。パラメータを使用して値を渡す方法に興味があるかもしれません。たとえば、上記のスクリプトでハードコードされた構成ファイルのパスを次のように置き換えることができます。

#!/bin/sh

source "$1"
cd /home/sh
[...] # rest of script as above

これにより、次のように実行できます./mysqlbackup.sh /path/to/db.conf。さらに 1 つの手順で 1 つのスクリプトに書き込んで、3 つの値をすべてパラメータとして指定することもできます。

#!/bin/sh

username="$1"
password="$2"
database="$3"
cd /home/sh
[...] # rest of script as above

...そう呼んでいます./mysqlbackup.sh username password database

答え2

最初のファイルを次のように変更できます。

s/username/joe/
s/password/secret/
s/database/c2duo_db/g

db.sedとして保存して使用する

sed -f db.sed mysqlbackup.sh > joeSqlbackup.sh

さまざまなユーザー/パスワードとデータベースに対してさまざまなsedスクリプトを生成します。

関連情報