linux下编写脚本从ftp服务器定时下载文件

linux下编写一个脚本,定时从ftp服务器下载前一天的文件,进行备份到linux。

我的ftp服务器是一个windows系统,使用脚本时,先测试里面的命令是否已经能够正常运行。
小白实践成功,记录下来。

一、写脚本

1、linux服务器 /home/test1/ 下建一个download.sh

cd /home/test1
touch download.sh

2、脚本写入:
vi download.sh

#下载前一天生成的文件脚本

#!/bin/bash
wget -r -nH -P/home/test/ ftp://0.0.0.0:900/*$(date -d "1 day ago" +"%Y%m%d")* --ftp-user=root --ftp-password=123456

解释:
0.0.0.0:900 # ftp服务器的IP和对应端口。
-r参数就是用来目录下载的,递归下载
-nH不包含主机文件夹
ftp://0.0.0.0:900/*$(date -d "1 day ago" +"%Y%m%d")* ,提取ftp服务器目录下的文件。
-P 下载到指定目录,下载到linux目录/home/test1/

全量下载所有文件代码如下:

wget -r -nH -P/home/test/ ftp://0.0.0.0:900/* --ftp-user=root --ftp-password=123456

下载当天日期的文件代码如下:

wget -r -nH -P/home/test/ ftp://0.0.0.0:900/*$(date +"%Y%m%d")* --ftp-user=root --ftp-password=123456

3、/home/test目录下赋予脚本执行的权限:chmod +x download.sh
可以运行sh download.sh测试脚本

二、定时运行脚本

1、service crond status #查看crond启动状态
2、crontab -e #写入定时任务
写入:30 16 * * * /home/test1/download.sh #每天16:40执行
3、crontab -l #查看当前任务调度
4、/sbin/service crond start #启动crond服务
4、cat /var/spool/mail/root #查看定时任务生成的日志

三、其他命令

1、ll
命令行输入ll或者ls -l查看文件的访问权限。

2、ntsysv
查看crontab服务是否已设置为开机启动,执行命令:ntsysv
总结一下功能按钮:
上下键:可以在中间的方框当中,在各个服务之间移动;
空格键:可以用来选择你所需要的服务,[*]表示开起启动;
tab键:可以在方框、OK、Cancel之间移动;
[F1]键:可以显示该服务的说明。

3、vi ~/.bash_profile #环境变量配置
可以在家目录下查看.bash_profile里的PATH。
如果是:PATH=$PATH:$HOME/bin则需要添加成如下:

PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin

4、yum install ftp/wget
安装命令

5、每隔30分钟root执行一次updatedb命令
*/30 * * * * root updatedb

四、注释

1、linux drwxr-xr-x #linux文件属性,ll可以查看
d:第一位表示文件类型。d是目录文件,l是链接文件,-是普通文件,p是管道
rwx:第2-4位表示这个文件的属主拥有的权限,r是读,w是写,x是执行。r:可读取文件的实际内容
w:可编辑、新增、修改该文件的实际内容
x:可被执行
r-x:第5-7位表示和这个文件属主所在同一个组的用户所具有的权限。
r-x:第8-10位表示其他用户所具有的权限

2、crontab 格式

 *  *  *  *  *       XXX
 分   时  天  月   星期     命令

取值范围:分钟 (0-59),小時(0-23),日期(1-31),月份(1-12),星期(0-6) //0代表星期天
符号 “*”代表取值范围内的数字,
   “/”代表”每”,
   “-”代表从某个数字到某个数字,
   “,”分开几个离散的数字

例子:
30 3 10,20 * * ls #每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25 8-11 * * * ls #每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15 * * * * ls #每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30 6 */10 * * ls #每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls 命令。 ]

3、+%Y%m%d%H%M%S #日期格式
Test.sh命令测试:

#!bin/bash
time2=$(date +"%Y%m%d%H%M%S")
echo $time2

%Y:年份(以四位数来表示)。2019
%m:月份(以01-12来表示)。 10
%d:日期(以01-31来表示)。 23
%H:小时(以00-23来表示)。
%M:分钟(以00-59来表示)。
%S:秒(以本地的惯用法来表示)。

参  数:
 %H  小时(以00-23来表示)。
 %I  小时(以01-12来表示)。
 %K  小时(以0-23来表示)。
 %l  小时(以0-12来表示)。
 %M  分钟(以00-59来表示)。
 %P  AM或PM。
 %r  时间(含时分秒,小时以12小时AM/PM来表示)。
 %s  总秒数。起算时间为1970-01-01 00:00:00 UTC。
 %S  秒(以本地的惯用法来表示)。
 %T  时间(含时分秒,小时以24小时制来表示)。
 %X  时间(以本地的惯用法来表示)。
 %Z  市区。
 %a  星期的缩写。
 %A  星期的完整名称。
 %b  月份英文名的缩写。 time
 %B  月份的完整英文名称。
 %c  日期与时间。只输入date指令也会显示同样的结果。
 %d  日期(以01-31来表示)。
 %D  日期(含年月日)。
 %j  该年中的第几天。
 %m  月份(以01-12来表示)。
 %U  该年中的周数。
 %w  该周的天数,0代表周日,1代表周一,异词类推。
 %x  日期(以本地的惯用法来表示)。
 %y  年份(以00-99来表示)。
 %Y  年份(以四位数来表示)。
 %n  在显示时,插入新的一行。
 %t  在显示时,插入tab。
 MM  月份(必要)。
 DD  日期(必要)。
 hh  小时(必要)。
 mm  分钟(必要)。
 CC  年份的前两位数(选择性)。
 YY  年份的后两位数(选择性)。
 ss  秒(选择性)。
 -d<字符串>  显示字符串所指的日期与时间。字符串前后必须加上双引号。
 -s<字符串>  根据字符串来设置日期与时间。字符串前后必须加上双引号。
 -u  显示GMT。
 --help  在线帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪异的bug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值