ファイル編集前の簡易バックアップ
Linuxの設定ファイルなどを編集する際に、編集前のファイルのバックアップを取って置きたいことがある。設定をしくじったりした場合に、元の設定に戻したいからだ。
私は、そのために、次のようなシェルコマンドを自作して利用している。
以下の内容で、~/.functionsを作成する。
この関数は、以下のような動作をするものである。
~/.bashrcで.functionsを読み込むようにしておくと良い。
私は、そのために、次のようなシェルコマンドを自作して利用している。
以下の内容で、~/.functionsを作成する。
bk ()
{
file=${1##*/};
dir=${1%${1##*/}};
( if [ "$dir" = "" ]; then
true;
else
if [ -d "$dir" ]; then
echo cd $dir;
cd $dir;
else
echo "No such directory: $dir ";
return 1;
fi;
fi;
if [ -f "$file" ]; then
mkdir -p .bk;
echo cp -p $file .bk/$file.$(date +"%Y%m%d%H%M" -r $file);
cp -p $file .bk/$file.$(date +"%Y%m%d%H%M" -r $file);
else
echo "No such file: $file ";
fi )
}
この関数は、以下のような動作をするものである。
- バックアップを取りたいファイルが存在するディレクトリに.bk/とサブディレクトリを作成する。
- ファイルの最終変更日時(mtime)をサフィックスにもつコピーを作成する。
ktaka@hana:~$ . ~/.functionsファイルの更新時をサフィックスに持つので、複数のバックアップファイルが存在する場合でも便利である。
ktaka@hana:~$ ls -la /home/ktaka/hello
-rw-r--r-- 1 ktaka ktaka 1048576000 May 27 2009 /home/ktaka/hello
ktaka@hana:~$ bk /home/ktaka/hello
cd /home/ktaka/
cp -p hello .bk/hello.200905270208
ktaka@hana:~$ ls -la /home/ktaka/.bk/hello.200905270208
-rw-r--r-- 1 ktaka ktaka 1048576000 May 27 2009 /home/ktaka/.bk/hello.200905270208
~/.bashrcで.functionsを読み込むようにしておくと良い。
if [ -f ~/.functions ]; then
. ~/.functions
fi
Comments