shell脚本笔记(原创不断记录)

本文介绍了一种使用Shell脚本实现自动化备份的实践过程,包括统计特定目录下的子目录数量,通过日期来确定备份目标目录,并实现了定时备份功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天开始自己的shell脚本练习,刚好公司有太服务器,要时间对数据的cp是按月的:

考虑:首先寻找规律,发现都放置在/opt/www/aaa/  里面有很多的2级和3级目录和文件,但我追踪要备份的是年月为文件名的格式:2015_06

这样的格式,首先我们不清楚这个目录下有多少这样的2015_06的子目录所以需要统计:

find /opt/www/aaa -name 2015_06 查看了下我要备份的地方#!/bi#admin fengtaotao Email:23956580@qq.com

#Fri Jul  3 16:35:48 CST 2015   
pathh=/opt/www/acc/musicFile/    @首先定义的是源文件路径 
pathd=/opt2/musicFile/       @要备份到的路径
datem=`date +%m`          @这里我定义一个当前月的显示 原因是我在crontab中是要备份的是上个月的
#getMonth              @简单的注释  我喜欢吧注释写在行代码下面
if [ "$datem" == 01 ];then       @当前月是1月份那么当前年-1从而备份去年的12月份
  datem="_12"           @如果 当前月是1月份 那么僵变量修改为12月份
  datey=`date +%Y`
  datey=$(($datey-1))       @将年份改为去年 这样就是去年的12月份
else
  datem="_0$(($datem-1))"   datey
=`date +%Y`          @考虑到每年的1月份要备份去年的 fi
#getFullYear

dird="$datey$datem" #echo "$dird" readd=`date +%N`.txt find $pathh -name $dird &>> $readd for i in $(cat $readd);do aac=$(echo $i | awk -F "/" '{print $6"/"$7"/"}') aac=${pathd}${aac} cp -r $i $aac &>> dbcp.log done rm -rf $readd

OK  接下来修改下权限和crontab 的定时

chmod u+x dbback.sh
crontab -e
0 1 1 * * /root/bash/dbback.sh


没个月的1号 凌晨1点整开始备份

 

2.当然我也写了一个手动备份的脚本

#!/bin/bash
#admin fengtaotao Email:23956580@qq.com
#Fri Jul  3 16:35:48 CST 2015
pathh=/opt/www/acce/musicFile/
pathd=/opt2/musicFile/
touch ulist.txt
readd=ulist.txt

for a in $(cat list.txt);do

    find $pathh -name $a &>> $readd
done

for i in $(cat $readd);do
    aac=$(echo $i | awk -F "/" '{print $6"/"$7"/"}')
    aac=${pathd}${aac}
    cp -r $i $aac &>>dbcp.log
done

rm -rf $readd

这个我们可以再脚本的同目录下 创建一个list.txt文档,在里面写入我们需要备份的名称列表默认是换行为一个名称

 

转载于:https://www.cnblogs.com/patf/p/4619599.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值