expect自动上传目录到FTP服务器

客户需求:在/home/installer目录下会每天生成一个目录(日期格式),需要每天定时把这些目录上传到云服务器指定目录下(FTP)

思路:crontab添加任务计划,需要自动登录ftp服务器,所以需要expect来自动输入账号密码,

解决方案:

1:下载所需要的工具包:expect,lftp(直接yum下载即可,此步忽略)

2:编辑expect脚本,vim /home/install/back.expect

#!/usr/bin/expect

set FTP_IP 192.168.1.10
set user installer
set passwd installer
set timeout 15
set date [ exec date +%F ]
# 引用date时间,要不然无法获取每天日期
set seven_ago [ exec date -d "+7 day ago" +%F ]
# 获取7天前日期,做定时删除用,"+7 day ago"必须用双引号,否则会出错
set ftp_dir /home/install/back
set local_dir /home/install

spawn /usr/bin/lftp $user:[email protected]$FTP_IP

expect {
# 切换到需要备份到ftp的目录
"*@$FTP_IP:~>" send { "cd $ftp_dir\r" }
}

expect {
# 上传本地目录里的当天目录,-c是续传,-R递归
"*$ftp_dir>" send { "mirror -R -c $local_dir/$date\r" }
}

expect {
# 上传本地目录里的ZIP文件
"*$ftp_dir>" send { "put $local_dir/$date\r" }
}

expect {
# 删除ftp目录里7天前的目录
"*$ftp_dir>" send { "rm -rf $seven_ago\r" }
} 

expect eof
exit

3:将脚本写到任务计划里,比如每天晚上10点上传

0 22 * * * /usr/bin/expect /home/installer/back.expect

4:然后启动任务计划

/etc/init.d/crontab start

时间: 2024-08-02 02:03:47

expect自动上传目录到FTP服务器的相关文章

一个自动上传ip到ftp服务器的bat脚本

如题: 基本网上某个版本优化: @Echo Off ::Ipconfig /all >i.txt ::findstr /r "10.*.*.*" i.txt>ip.txt set ftp.up=C:\Users\%username%\AppData\Local\ftp.up set file=C:\Users\%username%\AppData\Local\ip.txt Ipconfig /all |findstr /r "10.*.*.*">%

Linux中使用vsftpd搭建指定用户指定目录的ftp服务器的方法

一.检查Linux中vsftpd的安装情况. 二.将系统中的SELinux关闭,然后重新启动电脑 关闭SELinux的方法: 修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启.如果不想重启系统,使用命令setenforce 0注:setenforce 1 设置SELinux 成为enforcing模式setenforce 0 设置SELinux 成为permissive模式在lilo或者grub的启动参数中增加:selinux=0

Nginx日志切割并计划任务自动上传到FTP服务器

枫城浪子原创,转载请标明出处! 微信bh19890922 QQ445718526,490425557 更多技术博文请见个人博客: https://fengchenglangzi.000webhostapp.com http://fengchenglangzi.blog.51cto.com 一.简述 Nginx WEB服务器每天会产生大量的访问日志,而且不会自动地进行切割,如果持续天数访问,将会导致该access.log日志文件容量非常大,不便于SA查看相关的网站异常日志,并且后期进行分割非常不易

ubuntu 14.04 下FTP服务器的搭建--锁定用户目录,解决vsftpd: refusing to run with writable root inside chroot()

FTP服务器的搭建,我要实现的需求是: 不允许匿名访问,因为我的机器不想让谁都能登录上来,随便获取文件, 需要锁定一个目录,因为在家里,我需要给媳妇下载一些电影 韩剧之类的东西,媳妇会来我机器下载,但是我不想让他随意操作我的东西. 万一删除我的配置文件,我就惨了(吐槽一下韩剧:媳妇问我,你都没看过韩剧怎么知道它不好看呢,我说:我没吃过屎 但是知道它一定不好吃!) 另外,需要本机也能访问,因为我要做一些关于FTP的测试.  不单独建立FTP用户,FTP也使用ubuntu桌面的用户进行登录和操作,

使用递归方法实现,向FTP服务器上传整个目录结构、从FTP服务器下载整个目录到本地的功能

我最近由于在做一个关于FTP文件上传和下载的功能时候,发现Apache FTP jar包没有提供对整个目录结构的上传和下载功能,只能非目录类型的文件进行上传和下载操作,后来我查阅很多网上的实现方法,再结合自己的理解.以及符合自己的需求,完成了我自己的apache FTP jar包补充类. 上面是背景,基本叙述完毕,下面开始介绍实现方法和代码. 一.环境搭建: 1.使用的FileZilla Server开源免费软件,安装过后建立的本地FTP服务器. 2.使用的apache上下载FTP工具包,引用到

备份部分mysql表并上传至指定ftp服务器目录中

防伪码:忘情公子著 前几天领导安排了一个任务,让写一个脚本备份某mysql数据库中的部分表,并要将备份好的文件上传至某ftp服务器中,于是就有了以下的脚本 #!/bin/bash #Filename:mysqldump.sh #Function:backup a part of tables from mysql databases then package it and put it to ftp server #Author:Forgotten Love #Date:2016-12-15 b

Linux怎样创建FTP服务器--修改用户默认目录

在创建FTP服务器之有先命令: ps -ef |grep vsftpd 查一下系统有没有安装vsftpd这个服务器,如果出现如下图所示的界面说明没有安装.   然后再执行:yum install vsftpd -y 进行在线安装vsftpd这个服务.   安装成功以后需要把匿名登陆的这个功能关闭了. 使用命令: vim /etc/vsftpd/vsftpd.conf 然后在里成找到:? anonymous_enable=NO   然后再查看一下vsftpd这个服务有没有启动. 使用命令: chk

用winrar和ftp命令实现自动备份文件并自动上传到指定的ftp服务器

这篇文章主要介绍了用winrar和ftp命令实现自动备份文件并自动上传到指定的ftp服务器的方法,需要的朋友可以参考下. http://www.jb51.net/article/50359.htm 1.利用winrar建立压缩包 首先将要备份的文件路径收集到一个文本文件里 如我的rat.txt里内容如下: "C:\Documents and Settings\EvanZhang\Desktop\untitled.JPG""C:\Documents and Settings\E

Linux服务器建站数据备份自动上传FTP服务器

现在很多朋友通过购买云服务器建站,有时候由于服务器系统的问题,没有及时做好网站数据的备份而导致数据的丢失.如果你手中还有其他云服务器或者FTP服务器可以实现自动备份上传的功能.本文仅仅是做一个备份数据想法. (1)网站数据备份 将网站数据/var/www/vhost/www.51cto.com和/var/www/vhost/www.baidu.com分别备份到: /Data/code-backup/www.51cto.com和/Data/code-backup/www.baidu.com下. [