こないだPCが壊れたんですけど、そういうときに備えて超重要なファイルだけでも自動バックアップしておこう、と思ったので、gmailにバックアップファイルをメールするスクリプトを作ることにしました。
引数に任意のファイル名を指定して送れます。
Net::SMTP::SSLのインストールに失敗するようなときはこちらのサイトが参考になります。
#!/usr/bin/perl use strict; use warnings; use Net::SMTP; use Net::SMTP::SSL; use MIME::Entity; use MIME::Types; my @file_list = @ARGV; my %smtp = ( host => 'smtp.gmail.com', port => 465, user => 'sample_user@gmail.com', pass => 'password', ); my %mail = ( From => $smtp{user}, To => 'sample_user@gmail.com', Subject => 'backup', Data => 'These are backup files', ); my $types = MIME::Types->new; my $msg = MIME::Entity->build(%mail); foreach my $file (@file_list){ $msg->attach( Path => $file, Type => $types->mimeTypeOf($file)->type, Encoding => "base64", ); } my $s = Net::SMTP::SSL->new($smtp{host}, Port => $smtp{port}, Debug => 1); $s->auth($smtp{user}, $smtp{pass}) || die; $s->mail($mail{From}); $s->to($mail{To}); $s->data(); $s->datasend($msg->stringify); $s->dataend(); $s->quit;
あとはこれをcronに設定しておけばOKかな。