コンテンツデータ移行時に使うスクリプト

サーバ移行時に若干困ったので、ついでにスクリプトを組んだので、更についでにブログに書いてみる。

今回はPerlで書いてみた。

#!/usr/bin/perl
use strict;
my @chown;
my @chmod;

#ディレクトリの指定
my $directory = $ARGV[0];
my @filelist = `find $directory -ls`;
foreach my $file(@filelist){
	$file =~s/\s+/\t/g;
	my @info = split(/\t/, $file);
	#ファイルのステータスを取得
	my @status = stat $info[10];
	#パーミッションを8進数に変換
	my $permission = substr((sprintf "%03o", $status[2]), -3);

	my $chownCommand = sprintf("chown %s:%s %s\n",
		$info[4], $info[5], $info[10]);
	my $chmodCommand = sprintf("chmod %s %s\n",
		$permission, $info[10]);

	push(@chown, $chownCommand);
	push(@chmod, $chmodCommand);
}
foreach my $command(@chown){
	print $command;
}
foreach my $command(@chmod){
	print $command;
}

tarコマンドで固めて移行先サーバにアップすればいいやーんと思われるかもしれないけど、そういう状況でない場合もあるのでw

使い方

linux限定にはなるけど、上記perlスクリプトがかかれたplファイルをどこでもいいので配置して、下記コマンドを実行。

 [user@localhost] $ ./save_fileinfo.pl /var/www/html
 

良く使う mysql back up shell

自分がよく使うバックアップシェルをメモ書き。

#!/bin/sh
MYDB='dbname'
MYUSER='mysqluser'
MYPASSWORD='mysqlpassword'
BACKDIR=~/backupdb/
DAY=`date +%d`
mysqldump -u $MYUSER -p$MYPASSWORD $MYDB > $BACKDIR$MYDB.$DAY.sql

だいたいcronで毎日ダンプ取る。30日~31日の世代で出力。