ファイルをバックアップするプログラムを作る
多くのOSに対応するプログラムは単純であるべきだと考え、shellで組む。
プログラムは、ファイルをバックアップするが、同一の内容のファイルを重複してバックアップしない。
ファイル名: backup.sh
#!/bin/sh
FILE=$1
BACKUP=$2
ARCHIVE=$3
main() {
if [ ! "$FILE" -o ! "$BACKUP" -o ! "$ARCHIVE" ]; then
echo -e "$0 FILE BACKUP ARCHIVE"
return 1
fi
DIR=`dirname "$BACKUP"`
if [ -e "$BACKUP" ]; then
ERR=`cmp "$FILE" "$BACKUP"`
if [ ! "$ERR" ]; then
return 0
fi
ADIR=`dirname "$ARCHIVE"`
if [ ! -e "$ADIR" ]; then
mkdir -p "$ADIR"
fi
NAME=`basename "$BACKUP"`
tar -acf "$ARCHIVE" -C "$DIR" "$NAME"
DATE=`date '+%F'`
mv "$ARCHIVE" "$ARCHIVE-$DATE"
rm -f "$BACKUP"
fi
if [ ! -e "$DIR" ]; then
mkdir -p "$DIR"
fi
cp -a "$FILE" "$BACKUP"
return 0
}
main $@ || exit $?
使い方は
sh ./backup.sh {バックアップするファイル名} {バックアップ先のファイル名} {アーカイブのファイル名}
2017/10/04 21:08