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スクリプトを生成します。