设为首页 收藏本站
查看: 1889|回复: 0

ftp搭建以及增量同步实现

[复制链接]

尚未签到

发表于 2015-5-28 12:55:10 | 显示全部楼层 |阅读模式
  最近在接触系统运维,搭建好lnmp之后,老大布置的第一件任务就是ftp的搭建和实现两台主机之间的定时增量同步。自己研究了一周,略有心得,这里简单总结一下,希望于正在看这篇文章的你有所帮助。

老规矩,先说一下本文的结构,理顺思路。本文分两部分:
    ftp的相关知识和环境搭建
    定时增量同步实现(这里主要介绍通过crontab)
好了,正式开始。
一、ftp的相关知识和环境搭建
  1、ftp相关知识
  FTP(File Transfer Protocol, FTP)是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上载文件,创建或改变服务器上的目录。
  限于篇幅,关于ftp的基础知识,这里就略过,读者如果有兴趣,可以点击一下链接http://www.360doc.com/content/09/0410/15/126429_3084317.shtml查看,相当详细。
  2、服务器搭建
Ubuntu下Ftp的软件有好多种:比如wu-Ftp、proFtpd、vsFtpd,相比之下,vsftp功能强大同时配置也简单,并且大多是linux系统下自带的Ftp软件,而且像FREEBSD等网站都是采用,所以在这里选择了vsftpd。
安装(如果出现意外就先用sudo apt-get update更新一下再安装):
  sudo apt-get install vsFtpd
修改配置:
修改之前,先备份一下总是好的,省得万一出现意外再手忙脚乱的:sudo cp /etc/vsFtpd.conf /etc/vsFtpd.conf.old。现在可以放心编辑了:sudo gedit /etc/vsFtpd.conf。下面我们一起来看看它的配置文件吧:
  #anonymous_enable 是否允许匿名ftp,如否则选择NO,默认允许匿名访问,注意当允许是所有用户均视为匿名登录。
  #local_enable 是否允许本地用户访问,是指VSFTP所在机器上的注册用户。
  #local_umask=022 默认的umask码
  #write_enable 是否允许本地用户修改和删除
  #local_umask=022 FTP上传文件权限 ,默认是077
  #anon_upload_enable=YES 是否允许匿名用户上传
  #anon_mkdir_write_enable=YES 是否允许匿名用户的写和创建目录的权限
  #dirmessage_enable=YES 当切换目录时,是否显示该目录下message隐藏文件的内容
  #xferlog_enable=YES 是否激活上传和下载的日志
  #connect_from_port_20=YES 是否启动FTP数据端口20的连接请求
  #chown_uploads=YES 是否改变上传文件的所有者
  #chown_username=whoever 改变上传文件的所有着为whoever
  #xferlog_file=/var/log/vsftpd.log 上传/下载日志文件所默认的路径
  #xferlog_std_format=YES 是否使用标准的ftpd xferlog日志格式
  #idle_session_timeout=600 是否将在用户会话空闲10分钟后被中断
  #data_connection_timeout=120 是否将在数据连接空闲2分钟后被中断
  #nopriv_user=ftpsecure 是否运行vsftpd需要的非特殊系统用户默认nobody
  #async_abor_enable=YES 是否是否允许运行特殊的FTP命令async
  #ascii_upload_enable=YES 是否启用上传的ascii传输方式
  #ascii_download_enable=YES 是否启用下载的ascii传输方式
  #ftpd_banner=Welcome to blah FTP service. 用户连接服务器后显示信息
  #deny_email_enable=YES 是否允许某些匿名用户使用邮件地址(默认的)
  chroot_local_user=NO
  chroot_list_enable=YES
  chroot_list_file=/etc/vsftpd.chroot_list #指出被锁定在自家目录中的用户的列表文件。文件格式为一行一用户。
  注意:当chroot_local_user=NO、chroot_list_enable=YES时,vsftpd.chroot_list中用户为锁定用户,即他们除了自己的目录,不可以访问其他目录。
  当chroot_local_user=YES、chroot_list_enable=YES时,vsftpd.chroot_list中用户为非锁定用户,他们可以访问任何其他目录。
  local_root=/var/www/web (路径自定义)#定义所有本地用户的根目录。当本地用户登入时,将被更换到此目录下。(注释则访问该用户自己目录)
  write_enable=YES
  max_clients=100 #FTP服务器最大承载用户
  max_per_ip=5 #限制每个IP的进程
  local_max_rate=256000 #最大传输速率(b/s)
  hide_ids=YES #是否隐藏文件的所有者和组信息
  idle_session_timeout= 3000  #空闲(发呆)用户会话的超时时间,若是超出这时间没有数据的传送或是指令的输入,则会强迫断线。单位为秒,默认值为300。
  配置vsftpd.chroot_list
  增加需要锁定/非锁定目录的用户(根据自己情况添加)
  删除vsftp默认访问路径
  $ sudo rmdir /home/ftp 根据local_root定义的目录,新建一个,以控制登陆用户进入此目录
  重启vsftp服务
  $ /etc/init.d/vsftpd restart
  ok,关于服务器搭建先就这么多吧,可能有些细节没注意到,等以后再完善把。
  二、定时增量同步带实现
  1、 首先说增量同步的实现:
  先来熟悉下 了lftp 的基本用法,如果 ftp 服务器是匿名,只要:
  lftp ftpsite
  就可以登录进服务器,如果需要用户名和密码,就要像下面的样子:
  lftp -u username,password ftpsite
  然后通过mirror,实现同步
  mirror 需要备份的目录 保存备份计算机的本地目录
  例如 mirror /work save/backup,这样 lftp 就会帮你自动同步目录下的所有文件。
  这里,读者了解一下mirror的相关参数,是很有必要的:
  --delete: 如果远程目录下已经没有某个文件,而本地有,则删除这个文件。
  --only-newer: 只下载新的文件。
  --exculde: 不包含某个目录。
  --verbose: 详细输出。
  比如:mirror --delete --only-newer --verbose /work backup/,表示自动备份远处电脑的 work文件夹,到本地当前目录的 backup文件夹下,并且删除已经不存在的文件,并且只下载最新的文件,再给出详细的输出。
  你也可以用 lftp 的 -e 选项,把命令直接接在 lftp 之后:
  lftp -u username,password -e"mirror --delete --only-newer --verbose /work backup/" ftpsite
  也可以用 at 选项指定备份的时间:
  lftp at 00:00 -u username,password -e"mirror --delete --only-newer --verbose /work backup/" ftpsite
  这样每天夜里 12 点就会执行备份任务。通过这个选项,我们可以实现简单的定时。
  那么,如何恢复备份呢,很简单,只需要在 mirror 命令中加入 --reverse 选项:
  mirror --reverse --delete --only-newer --verbose /work backup/
  这样 lftp 就会将备份上传到 ftp 服务器上了。
  2、这里要重点讲的是通过crontab实现更加灵活的定时控制。说句题外话,做这个任务最大的收获并不是这项任务本身,而是了解到了linux的自动执行crontab以及以及windows下的任务计划schtasks机制,关于它们潜在的巨大的作用,我相信不用我多说。
  先了解下crontab。在linux平台上如果需要实现任务调度功能可以编写cron脚本来实现。linux缺省会启动crond进程,crond进程不需要用户启动、关闭。crond进程负责读取调度任务并执行,用户只需要将相应的调度脚本写入cron的调度配置文件中。

cron的调度文件有以下几个:

  • crontab
  • cron.d
  • cron.daily
  • cron.hourly
  • cron.monthly
  • cron.weekly
    如果用的任务不是以hourly monthly weekly方式执行,则可以将相应的crontab写入到crontab 或cron.d目录中。定时增量同步实现思路有两种:一种是直接修改crontab,达到相应目的,但是一般不推荐直接修改配置文件;另一种我们可以在配置目录下新建脚本,然后通过执行该脚本,定时去调用我们制定的脚本命令。
    比如:
    每隔一分钟执行一次脚本 /opt/bin/test-cron.sh (注意:要使脚本可执行,必须编译 chmod +x filename 这样才能用./filename 来运行)
    可以在cron.d新建脚本 echo-date.sh
    内容为
    */1 * * * * root  /opt/bin/test-cron.sh
    关于crond脚本的实现,这里推荐一个不错的网址http://liguxk.blog.iyunv.com/129038/123555,写的真心不错。还有一个不错的网址是关于crontab命令的使用的http://www.lc365.net/html/tech/26053.htm,也不错。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-71521-1-1.html 上篇帖子: linux下ftp命令的使用大全 下篇帖子: ftp服务器vsftpd的安装与配置[ubuntu, linux]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表