对家目录下的fd目录数据进行备份,要求始终保持保存最近3次的备份。待备份数据存放在/home/user/workdata中,最近三次备份文件分别命名为worknewdata.tar、work2nddata.tar和work3rddata.tar。
terminal命令:
命令行:
[root@localhost ~]# ls /home/lxc/fd/
test2 test3 test4 test5 test6 test7 test8 test9
[root@localhost ~]# ls /home/lxc/workdata
[root@localhost ~]# bash refresh.sh worknewdata.tar
------refreshing-------
del 0 file at /home/lxc/workdata/
/home/lxc/fd/test2
/home/lxc/fd/test3
/home/lxc/fd/test4
/home/lxc/fd/test5
/home/lxc/fd/test6
/home/lxc/fd/test7
/home/lxc/fd/test8
/home/lxc/fd/test9
8 copy from /home/lxc/fd to /home/lxc/workdata
---refresh successfully---
------backup------
/home/lxc/workdata/
/home/lxc/workdata/test2
/home/lxc/workdata/test3
/home/lxc/workdata/test4
/home/lxc/workdata/test5
/home/lxc/workdata/test6
/home/lxc/workdata/test7
/home/lxc/workdata/test8
/home/lxc/workdata/test9
backup successfully
[root@localhost ~]# rm -rf /home/lxc/fd/test2
[root@localhost ~]# bash refresh.sh work2nddata.tar
------refreshing-------
del test2 from /home/lxc/workdata
test2
del 1 file at /home/lxc/workdata/
0 copy from /home/lxc/fd to /home/lxc/workdata
---refresh successfully---
------backup------
tar: Removing leading `/' from member names
/home/lxc/workdata/
/home/lxc/workdata/test3
/home/lxc/workdata/test4
/home/lxc/workdata/test5
/home/lxc/workdata/test6
/home/lxc/workdata/test7
/home/lxc/workdata/test8
/home/lxc/workdata/test9
backup successfully
[root@localhost ~]# touch /home/lxc/fd/test100
[root@localhost ~]# bash refresh.sh work3rddata.tar
------refreshing-------
del 0 file at /home/lxc/workdata/
/home/lxc/fd/test100
1 copy from /home/lxc/fd to /home/lxc/workdata
---refresh successfully---
------backup------
tar: Removing leading `/' from member names
/home/lxc/workdata/
/home/lxc/workdata/test3
/home/lxc/workdata/test4
/home/lxc/workdata/test5
/home/lxc/workdata/test6
/home/lxc/workdata/test7
/home/lxc/workdata/test8
/home/lxc/workdata/test9
/home/lxc/workdata/test100
backup successfully
[root@localhost ~]# ls /home/lxc/backup
work2nddata.tar work3rddata.tar worknewdata.tar
脚本内容:
#对备份目录进行刷新
ls /home/lxc/fd/ >/tmp/.sourse
#把/fd的所有文件保存到/tmp/.sourse,把/workdata所有文件保存到/tmp/.dest
ls /home/lxc/workdata/ >/tmp/.dest
chmod 700 /tmp/.sourse /tmp/.dest
count=0
cd /home/lxc/workdata
#比较两个文件里/tmp/.souse 与/tmp/.dest的不同。
for i in $(comm -23 /tmp/.dest /tmp/.sourse) ; do
#删除/workdata里的多余文件
rm "$i" ; count=$((count+1))
echo "del $i from /home/lxc/workdata"
echo $i
done
echo "del $count file at /home/lxc/workdata/"
#重新获得文件的全名。初始化计数器。
ls /home/lxc/workdata/ >/tmp/.dest ; count=0
cd /home/lxc/workdata/
for i in $(comm -13 /tmp/.dest /tmp/.sourse) ; do
echo "/home/lxc/fd/$i"
#刷新文件夹
cp "/home/lxc/fd/$i" . ; count=$((count+1))
done
echo "$count copy from /home/lxc/fd to /home/lxc/workdata "
echo "refresh successful"
cho "------backup------"
DT=/home/lxc/backup
if [ ! -d "$DT" ]; then
mkdir -p "$DT" && echo "Directoyr $TD has been created."
else
tar -czvf $DT/$1 /home/lxc/workdata
fi
echo "backup successfully"