自動バックアップスクリプト第2版がリリースされました
2928 ワード
スクリプトは前版より追加され、タイムスタンプを記録する機能です.リアルタイムで変更したファイルをバックアップできます.個人写真、ドキュメント、コードのバックアップに適しています.
./backup_fileディレクトリの下にリストがあるはずです.fileディレクトリは、ファイルリストとファイルタイムスタンプを格納するために使用されます.
$1はバックアップが必要なディレクトリです.$2はバックアップ先ディレクトリ
$1は空ではありません.その後、バグを修正し、スクリプトをさらに改善します.
そのコードにバグがあることに気づいたら、ブロガーに知らせてください.あるいは、より良い実現方法があれば、一緒に検討することもできます.
また、このスクリプトでは、サブディレクトリのバックアップはできません.ファイルのバックアップしかできません.後でパブリケーションには、このサブディレクトリバックアップ機能が追加されます.
./backup_fileディレクトリの下にリストがあるはずです.fileディレクトリは、ファイルリストとファイルタイムスタンプを格納するために使用されます.
$1はバックアップが必要なディレクトリです.$2はバックアップ先ディレクトリ
$1は空ではありません.その後、バグを修正し、スクリプトをさらに改善します.
そのコードにバグがあることに気づいたら、ブロガーに知らせてください.あるいは、より良い実現方法があれば、一緒に検討することもできます.
また、このスクリプトでは、サブディレクトリのバックアップはできません.ファイルのバックアップしかできません.後でパブリケーションには、このサブディレクトリバックアップ機能が追加されます.
#!/bin/sh
# name backup file
# author acanoe
# timedate 2012_11_9 13:50
# versions 0.1
judge_your_input()
{
if [ -z $1 ] ; then
echo "please input your updatedir!"
echo ""
echo "example:"
echo "./back_file /backdir /updatedir"
echo "like this example"
echo ""
exit
fi
if [ -z $2 ] ; then
echo "please input your backdir!"
echo ""
echo "example:"
echo "./back_file /backdir /updatedir"
echo "like this example"
echo ""
exit
fi
}
clear_record()
{
if [ -e ./list_file/old_time_ioc ] ; then
rm ./list_file/old_time_ioc
fi
if [ ! -e ./list_file/new_time_ioc ] ; then
echo "create a new_time_ioc"
touch ./list_file/new_time_ioc
fi
if [ -e ./list_file/new_time_ioc ] ; then
mv ./list_file/new_time_ioc ./list_file/old_time_ioc
else
touch ./list_file/old_time_ioc
fi
}
find_change_file()
{
ls $1 > ./list_file/update_file_list
ls $2 > ./list_file/back_file_list
while read line
do
R=$(echo $line)
echo "$R `stat $1/$R | sed -n '7p'`" >> ./list_file/new_time_ioc
if [ ! -e ./list_file/new_time_ioc ] ; then
echo "create a new_time_ioc"
touch ./list_file/new_time_ioc
fi
done < ./list_file/update_file_list
# while read line
# do
# R=$(echo $line)
# echo "$R `stat $2/$R | sed -n '7p'`" >> ./list_file/old_time_ioc
# echo "$R"
# done < ./list_file/back_file_list
diff ./list_file/new_time_ioc ./list_file/old_time_ioc > ./list_file/diff_file
sed -n '/</p' ./list_file/diff_file > ./list_file/file
sed -e 's/< //g' ./list_file/file > ./list_file/the_file
sed -e 's/< //g' ./list_file/file > ./list_file/the_file
}
back_back_file()
{
while read line
do
R=$(echo $line | sed -e 's/ .*//g')
echo $R
cp $1/$R $2
done < ./list_file/the_file
}
find_not_exist()
{
ls $1 > ./list_file/file_list
ls $2 > ./list_file/back_list
diff ./list_file/file_list ./list_file/back_list > ./list_file/diff_file
sed -n '/</p' ./list_file/diff_file > ./list_file/file
sed -e 's/< //g' ./list_file/file > ./list_file/the_file
while read line
do
R=$(echo $line)
echo $R
cp -rf $1/$R $2
done < ./list_file/the_file
}
judge_your_input $1 $2
clear_record
find_change_file $1 $2
back_back_file $1 $2
find_not_exist $1 $2