按以上几种情况整合bat脚本如下:
文章插图
文章插图
#!/bin/bash# 每小时执行一次同步文件到ftp服务器,要考虑跨天情况# 设置今天对应的年月(yyyy-mm)、日期(dd)、时间(yyyy-mm-dd HH:MM:SS,注意中间空格的方式)date_ym=`date +%Y-%m`date_d=`date +%d`date_ymd=`date +%Y-%m-%d" "%H:%M:%S`# 半年前日期halfyear_ymd=`date -d "-179 day" +%Y-%m-%d`# 半年前对应日期再往前一小时所属日期,只能按小时数(24*179+1)halfyear_last_hour_ymd=`date -d "-4297 hour" +%Y-%m-%d`# 当前时间往前一小时所属年月日last_hour_ymd=`date -d "-1 hour" +%Y-%m-%d`last_hour_ym=`date -d "-1 hour" +%Y-%m`last_hour_d=`date -d "-1 hour" +%d`last_hour_h=`date -d "-1 hour" +%H`echo $date_ymd"开始同步------------------"echo $last_hour_decho $last_hour_ymecho $last_hour_ymdecho $last_hour_hecho $halfyear_ymdecho $halfyear_last_hour_ymd# 将执行日志保存进脚本目录下属日志文件夹/年月日文件夹,先创建文件夹,否则报错不存在目录mkdir -p /本地脚本目录/logs/$last_hour_ym/$last_hour_d/# 同步一小时前所在月份文件夹,比如文件夹2022-10if [ -d "/本地目录/"$last_hour_ym ]; thenecho $last_hour_ymlftp -u 账号,密码 ftp服务器ip << EOFmirror --reverse --only-missing --only-newer /本地目录/$last_hour_ym ftp服务器目录/$last_hour_ym --parallel=3 --log=/本地脚本目录/logs/$last_hour_ym/$last_hour_d/$last_hour_d-$last_hour_h.logbyeEOFelseecho $last_hour_ym"不存在"fi# 同步具体分类文件夹,不带年月子文件夹for item in 模块1目录 模块2目录 模块N目录doecho $item;lftp -u 账号,密码 ftp服务器ip << EOFmirror --reverse --only-missing --only-newer /本地目录/$item ftp服务器目录/$item --parallel=3 --log=/本地脚本目录/logs/$last_hour_ym/$last_hour_d/$item-$last_hour_h.logbyeEOFdone# 同步具体分类文件夹,带年月(模块名/2022-10)子文件夹for item in 模块11目录 模块22目录 模块NN目录doif [ -d "/本地目录/"$item"/"$last_hour_ym ]; thenecho $item;lftp -u 账号,密码 ftp服务器ip << EOFmirror --reverse --only-missing --only-newer /本地目录/$item/$last_hour_ym ftp服务器目录/$item/$last_hour_ym --parallel=3 --log=/本地脚本目录/logs/$last_hour_ym/$last_hour_d/$item-$last_hour_h.logbyeEOFelseecho $item"/"$last_hour_ym"不存在"fidone# 同步具体分类文件夹,带年月日(模块名/2022-10-29)子文件夹的for item in 模块111目录 模块222目录 模块NNN目录doif [ -d "/本地目录/"$item"/"$last_hour_ymd ]; thenecho $item;lftp -u 账号,密码 ftp服务器ip << EOFmirror --reverse --only-missing --only-newer /本地目录/$item/$last_hour_ymd ftp服务器目录/$item/$last_hour_ymd --parallel=3 --log=/本地脚本目录/logs/$last_hour_ym/$last_hour_d/$item-$last_hour_h.logbyeEOFelseecho $item"/"$last_hour_ymd"不存在"fidoneecho '同步结束----------------------'定时执行备份的脚本
以上脚本涉及诸多知识,对于不熟悉linux(shell、bat)命令的人来说会踩很多坑,下面备注下:
1、如何写一个linux脚本,可参考:https://blog.csdn.net/scdncby/article/details/112339627,其中首要备注#!/bin/bash,很多时候没有这个声明会报错 。
2、定时备份那么就要涉及到日期或者时间值,尤其是对于0点跨天时,凌晨23点以后新上传的文件,在第二天凌晨0点后如果只是按日期备份,那么23点的文件就容易漏掉,所以要按当前时间的前一小时所属的日期执行判断 。这里就需要用到linux的日期取值函数 。第一个搜到的参考文章是:https://blog.51cto.com/sadlar/1332921,然后自己摸索,到拼接年月日+时间的时候遇到一点障碍,不过还是解决了~~,关于linux字符串拼接可以参考文章:https://blog.csdn.net/sodalife/article/details/110673401 。最终得出以下取值:
经验总结扩展阅读
- 1 onps栈使用说明——API接口手册
- 1.python基础使用
- 吃完阿莫西林千万别碰这5种
- 索尼wf1000xm4怎么连接_索尼wf1000xm4使用说明
- 小米11使用感受_小米11使用测评
- 荣耀智慧屏x1怎么样_荣耀智慧屏x1使用测评
- 【操作说明】全能型H.265播放器如何使用?
- 饮水机漏水怎么回事及如何解决 饮水机使用注意事项有哪些
- 夏普电视机价格价格区间 有哪些使用的优势
- 二氧化氯消毒剂使用方法