like で対象テーブルを抽出し、パイプ(|)と xargs で mysqldump の引数として渡せば可能です。
# 接頭語 hoge_ というテーブルに対して dump を実行 mysql -h HOST -p -u USER DB_NAME -N -e 'show tables like "hoge_%"' | xargs mysqldump -h HOST -p -u USER DB_NAME > dump_hoge.sql # dump ファイルが生成されていることを確認 ls -l dump_hoge.sql
オプション【-e】で「sql を実行」しています
mysql -h HOST -p -u USER DB_NAME -e 'show tables like "hoge_%"' +----------------------------+ | Tables_in_DB_NAME (hoge_%) | +----------------------------+ | hoge_hoge | | hoge_fuga | +----------------------------+
ただし上記の結果をそのままパイプすると、「Tables_in_DB_NAME (hoge_%)」という項目名も渡されてしまい、以下のようなエラーが表示されます。
mysqldump: Couldn't find table: “Tables_in_DB_NAME”
そこで、オプション【-N】で「カラム名を非表示」にします。 この結果をパイプし、xargs で mysqldump の引数として渡しています
mysql -h HOST -p -u USER DB_NAME -N -e 'show tables like "hoge_%"' +------------+ | hoge_hoge | | hoge_fuga | +------------+