Linux FTP 服务器可以监测上传文件完成,并自动对文件操作吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
wuqingwei
V2EX    Linux

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

  •  
  •   wuqingwei 2019-05-20 09:22:58 +08:00 6042 次点击
    这是一个创建于 2408 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
    让用户同时上传一个文件的元信息文件用来校验
    ethsol
        11
    ethsol  
       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     Solana     916 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 21:08 PVG 05:08 LAX 13:08 JFK 16:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86