日期:2014-05-16  浏览次数:20731 次

求一个FTP取文件的方案
我的机器是linux的,需要连接到windows机器上取文件,使用FTP形式,取走所有文件后,删除所有文件。
问题:在我取文件的时候,没有新生成文件,如果当我把文件取走了,还没有删除之前,新生成了一个文件,那执行删除命令后,会把这个新生成的文件也删除,这样就造成了数据丢失。
请问,有什么办法可以解决这个问题?
------解决方案--------------------
你是删本地文件还是远程文件啊?我实在没看出来有文件丢失的可能性
------解决方案--------------------
不能取一个文件删除一个文件吗?
或者取的时候把文件列表保存下来,完了再按照表去删,不要全删嘛
------解决方案--------------------
呵呵,你们把协议改一改,文件名后面跟着年月日时分秒不就行了。你们终端设备按照日期来选择该设备对应的最旧文件操作就可以了。
------解决方案--------------------
楼主不就是想要移动文件嘛,简单
ftp登录先mkdir一个tmp文件夹
假设在ftp的根目录(/data)下有abc这个文件,想要把它移动到tmp文件夹下,用rename法
rename /data/abc /data/tmp/abc
按你要求,最后删除tmp就好了
------解决方案--------------------
没看懂, ftp是没法原子化获取与删除操作的, 如果要做到这一点,你可以做一些变通,自己根据需求设计一下,毕竟大家不是那么清楚的所有需求。
------解决方案--------------------
1.将你要取文件的文件夹改名,如mv aaa  aaa_tmp
2.新建个aaa文件夹继续接受新生成的文件
3.ftp取aaa_tmp里的文件,并删除aaa_tmp


改文件夹名和建文件夹名执行时间应该非常短暂。若要求理论上确保零丢失,可要求上游系统在生成文件时加入重试机制,如延时1s进行1次重试。