V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
wuqingwei
V2EX  ›  Linux

Linux FTP 服务器可以监测上传文件完成,并自动对文件操作吗?

  •  
  •   wuqingwei · 2019-05-20 09:22:58 +08:00 · 5594 次点击
    这是一个创建于 2016 天前的主题,其中的信息可能已经有所发展或是发生改变。
    linux 服务器,目前是 Centos,做 FTP 服务器,目前使用的是 vsftpd,想实现如下功能,自动监测 FTP 服务,如果有客户端上传文件完成,就对文件进行某个操作(具体什么操作不重要),这样的功能用什么方式实现较好,先谢过。
    20 条回复    2019-05-21 09:36:54 +08:00
    ebingtel
        1
    ebingtel  
       2019-05-20 09:26:46 +08:00
    问题来了 怎么判断用户上传完了? NOW() - LAST_MODIFIED_TIME() > INTERVAL?
    liwl
        2
    liwl  
       2019-05-20 09:32:29 +08:00   ❤️ 1
    inotify?
    AlisaDestiny
        3
    AlisaDestiny  
       2019-05-20 09:34:33 +08:00
    你这个用现成的软件恐怕不好做,你可以看下你会的语言的 ftp 协议库,定制一个。
    bbvps
        4
    bbvps  
       2019-05-20 09:34:58 +08:00
    bash 脚本,死循环,每秒检测一下。
    bbvps
        5
    bbvps  
       2019-05-20 09:36:11 +08:00
    其他的方法都太难,这个最简单。
    jasamboro
        6
    jasamboro  
       2019-05-20 09:42:27 +08:00
    具体什么操作不重要
    判断用户上传完成-->自动删除
    wuqingwei
        7
    wuqingwei  
    OP
       2019-05-20 09:50:14 +08:00
    @liwl 研究下。
    lithiumii
        8
    lithiumii  
       2019-05-20 09:55:30 +08:00
    Microsoft Flow 有个对接 FTP 的服务,可以在发现文件修改后进行操作
    但我猜他就是定时去看一看你文件改过了没有。
    clino
        10
    clino  
       2019-05-20 09:57:04 +08:00
    让用户同时上传一个文件的元信息文件用来校验
    zong400
        11
    zong400  
       2019-05-20 09:57:57 +08:00
    同时上传一个包含 md5 值的文件,操作的脚步循环校验
    lkan
        12
    lkan  
       2019-05-20 10:14:00 +08:00 via iPhone
    python 的 ftp 库适合你 简单易用
    0ZXYDDu796nVCFxq
        13
    0ZXYDDu796nVCFxq  
       2019-05-20 10:29:22 +08:00 via Android
    不依赖外部手段无法实现
    1.以前玩 0day 的时候,FTP 用 sfv(Simple File Verification)文件来校验文件完整性
    2.有些 FTP 客户端的实现是用临时文件,传输完成后用 FTP 的 rename 命令重命名
    lihongjie0209
        14
    lihongjie0209  
       2019-05-20 10:33:51 +08:00
    xnode
        15
    xnode  
       2019-05-20 11:13:54 +08:00
    可能需要双端比对 MD5
    sagaxu
        16
    sagaxu  
       2019-05-20 11:48:22 +08:00 via Android
    proftpd 有这个功能
    chcx
        17
    chcx  
       2019-05-20 11:49:59 +08:00
    inotify 就可以
    lieh222
        18
    lieh222  
       2019-05-20 17:29:22 +08:00
    写个端口转发 映射 ftp 服务器控制端口,监控控制信令,如果上传命令完成就可以认为是上传成功了
    ps1aniuge
        19
    ps1aniuge  
       2019-05-20 17:52:24 +08:00
    1 ftp,http,上传文件,下载文件,是不可靠的。
    2 ftp,http,上传文件,下载文件,完成通知,也是是不可靠的。
    3 经常会有上传下载完成了。但是文件只有 99%相同。
    4 所以人家才会发明 sfv,校验码等。
    5 只有带校验码,并再读一遍。才可靠。如 bt,rsync。
    wuqingwei
        20
    wuqingwei  
    OP
       2019-05-21 09:36:54 +08:00
    inotify 确实是个好东西。

    本来想使用 @mattx 脚本的方式实现,发现没有那么简单,因为后续需要对文件的操作涉及到的东西较多。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1295 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 23:31 · PVG 07:31 · LAX 15:31 · JFK 18:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.