ブログバックアップ用Perlスクリプトコード
2022-02-02 02:56:29
今まであまり気にしていなかったブログですが、定期的にsqlのバックアップを取ることにしたので、以下のようなちょっとしたスクリプトを書きました。
#! /usr/bin/perl
use warnings;
use strict;
use MySQL::Backup;
use Mail::Sender;
open my $tmp_sql, '>', "backup.sql";
my $mb = new MySQL::Backup('dbname', 'localhost', 'dbuser', 'dbpasswd', {'USE_REPLACE' => 1, 'SHOW_TABLE_NAMES' => 1});
print $tmp_sql $mb-> create_structure();
print $tmp_sql $mb->data_backup();
close $tmp_sql;
my $sender = new Mail::Sender { smtp => 'smtp.163.com',
from => '[email protected]',
# debug => 'backup_debug.log',
auth => 'LOGIN',
authid => 'mailuser',
authpwd => 'mailpasswd',
};
$sender->MailFile({ to => '[email protected]',
subject => 'Backup Blog SQL_'.time(),
msg => '3Q',
file => 'backup.sql',});
mysqldumpを直接使うのではなく、このMySQL::Backupモジュールを見つけて、エクスポートされたsqlを見てみると、mysqldumpの結果が少し変わっていますね。mysqldumpのエクスポートされたsqlの一般的な構造は以下のような感じです。
DROP TABLE IF EXISTS `tablename`;
CREATE TABLE `tablename`(ID INT NOT NULL ...) ;
LOCK TABLES `tablename` WARITE;
INSERT INTO `tablename` VALUES(...) ,(...) ,(...) ;
UNLOCK TABLES;
そして、MySQL::Backupがエクスポートするsql構造は次のようになります。
CREATE TABLE `tablename`(ID INT NOT NULL ...) ;
REPLACE INTO `tablename`(ID,...) VALUES(1,...) ;
REPLACE INTO `tablename`(ID,...) VALUES(2,...) ;
実際、挿入より置換の方がいいのかどうかよくわかりませんが、USE_REPLACE=>'1'とpodに書いてある例では、挿入に慣れていれば、コピーするだけで、新しいビルドオブジェクトでは、このパラメータをつけずに、行に入れることができます。このMail::Senderモジュールに加えて、マイクロブログのコメントで、多くの友人が利用していることがわかり、私も一度はあきらめたNet::SMTP_authを、使ってみて、いい感じ〜〜〜〜。
コピーコード
コードは以下の通りです。
#! /usr/bin/perl
use warnings;
use strict;
use MySQL::Backup;
use Mail::Sender;
open my $tmp_sql, '>', "backup.sql";
my $mb = new MySQL::Backup('dbname', 'localhost', 'dbuser', 'dbpasswd', {'USE_REPLACE' => 1, 'SHOW_TABLE_NAMES' => 1});
print $tmp_sql $mb-> create_structure();
print $tmp_sql $mb->data_backup();
close $tmp_sql;
my $sender = new Mail::Sender { smtp => 'smtp.163.com',
from => '[email protected]',
# debug => 'backup_debug.log',
auth => 'LOGIN',
authid => 'mailuser',
authpwd => 'mailpasswd',
};
$sender->MailFile({ to => '[email protected]',
subject => 'Backup Blog SQL_'.time(),
msg => '3Q',
file => 'backup.sql',});
mysqldumpを直接使うのではなく、このMySQL::Backupモジュールを見つけて、エクスポートされたsqlを見てみると、mysqldumpの結果が少し変わっていますね。mysqldumpのエクスポートされたsqlの一般的な構造は以下のような感じです。
コピーコード
コードは以下の通りです。
DROP TABLE IF EXISTS `tablename`;
CREATE TABLE `tablename`(ID INT NOT NULL ...) ;
LOCK TABLES `tablename` WARITE;
INSERT INTO `tablename` VALUES(...) ,(...) ,(...) ;
UNLOCK TABLES;
そして、MySQL::Backupがエクスポートするsql構造は次のようになります。
コピーコード
コードは以下の通りです。
CREATE TABLE `tablename`(ID INT NOT NULL ...) ;
REPLACE INTO `tablename`(ID,...) VALUES(1,...) ;
REPLACE INTO `tablename`(ID,...) VALUES(2,...) ;
実際、挿入より置換の方がいいのかどうかよくわかりませんが、USE_REPLACE=>'1'とpodに書いてある例では、挿入に慣れていれば、コピーするだけで、新しいビルドオブジェクトでは、このパラメータをつけずに、行に入れることができます。このMail::Senderモジュールに加えて、マイクロブログのコメントで、多くの友人が利用していることがわかり、私も一度はあきらめたNet::SMTP_authを、使ってみて、いい感じ〜〜〜〜。
関連
-
Perlでは ->;, =>;, :: という記号はどういう意味ですか?
-
Perlについて(Perl公式サイトの翻訳です。)
-
Perl の読み書きファイルの簡単な例
-
Perlの強力な正規表現の例を解説
-
日付と時刻を操作するためのPerlのCPANモジュール10個の紹介
-
perl 操作 MongoDB エラー 未定義のシンボル。HeUTF8 解決策
-
Perlによるディレクトリの探索とLinuxコマンドによるログの解析 コード例共有
-
Perl の Getopt::Long モジュールを使用して、ユーザーのコマンドライン引数を受け取ります。
-
perl は目的のファイルのパスを読み込み、対応するファイルを開きます。
-
Perl モジュールをパッケージ化し、外部依存性を追加する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PerlとStrawberryPerl、ActivePerlの違いを詳しく解説
-
Perl uc,lc,ucfirst,lcfirst 大文字・小文字変換関数群
-
Windows 10でのPerl環境のインストールと設定のための詳細チュートリアル
-
Windowsにperlとkomodo IDEをインストールする詳細な手順
-
Perl イテレーションディレクトリの例
-
PerlによるMSSQLへのアクセスとMySQLデータベースへの移行スクリプト例
-
Perlの正規表現入門
-
[解決済み] Perlで複数行のコメントを入力するにはどうしたらいいですか?[重複している]。
-
[解決済み] Perlで配列を比較するにはどうしたらいいですか?
-
[解決済み] Hashに重複したキーや値を持たせることができるか