繁体   English   中英

Debian:每5分钟Cron bash脚本和lftp

[英]Debian: Cron bash script every 5 minutes and lftp

我们必须每5分钟运行一个脚本,以便从FTP服务器下载数据。 我们已经安排了FTP脚本,但是现在我们希望每5分钟自动下载一次数据。

我们可以使用:“ 0 * * * * /home/kbroeren/import.ch”,其中导入ftp脚本用于下载数据文件。

关键是,数据文件每5分钟在FTP服务器上变为可用。 有时,这将是一分钟的偏移量。 当文件在FTP服务器上变成几秒钟可用时,最好下载文件。 如果该文件已经可用,则可能会执行以下功能:扫描ftp文件文件夹,然后下载该文件;否则,脚本将在大约10秒钟内重试该文件。

要解决的另一点是FTP脚本的时间。 地图中有12,000个文件。 每次运行脚本时,我们都应该仅是最新的。 现在扫描文件夹大约需要3分钟的时间,这太长了。 所有数据文件的文件名都包含日期和时间,是否有可能使动态文件名每5分钟下载一次正确的文件?

还有很多问题,希望有人可以帮助我!

谢谢凯文·布罗伦

我们的FTP脚本:

 #!/bin/bash
 HOST='ftp.mysite.com'
 USER='****'
 PASS='****'
 SOURCEFOLDER='/'
 TARGETFOLDER='/home/kbroeren/datafiles'

 lftp -f "
 open $HOST
 user $USER $PASS
 LCD $SOURCEFOLDER
 mirror --newer-than=now-1day --use-cache $SOURCEFOLDER $TARGETFOLDER
 bye
 "

 find /home/kbroeren/datafiles/* -mtime +7 -exec rm {} \;

也许您可能想尝试一下curlftpfs 使用此FUSE文件系统,您可以将FTP共享安装到本地文件系统中。 如果这样做,您将不必从FTP下载文件,并且可以遍历文件,就好像它们是本地文件一样。 您可以按照以下步骤尝试一下:

# Install curlftpfs
apt-get install curlftpfs
# Make sure FUSE kernel module is loaded
modprobe fuse    
# Mount the FTP Directory to your datafiles directory
curlftpfs USER:PASS@ftp.mysite.com /home/kbroeren/datafiles -o allow_other,disable_eprt

现在,您可以根据需要处理这些文件。 您将始终在此目录中拥有最新文件。 但是请注意,这不是文件的副本。 您直接在FTP服务器上工作。 例如,从/ home / kbroeren / datafiles中删除文件会将其从FTP服务器中删除。

如果对您有用,则可能需要将此信息写入/ etc / fstab中,以确保mashine的每个开头都挂载目录:

curlftpfs#USER:PASS@ftp.mysite.com /home/kbroeren/datafiles fuse auto,user,uid=USERID,allow_other,_netdev 0 0

确保更改USERID以匹配需要访问此文件的用户的UID。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM