Visit Our UNIX and Linux User Community


Ftp get files created in last 30 minutes


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Ftp get files created in last 30 minutes
# 1  
Old 08-15-2013
Ftp get files created in last 30 minutes

Is it possible in an ftp script to get remote files based on whether they have been created in the last 30 minutes?
# 2  
Old 08-15-2013
Yes, it's perfectly possible.
Just a question based on a previous experience with ftp. Are you sure you want to do this using ftp? No chance of using sftp instead?
What OS are you on?
I'll be more than glad to help you.
# 3  
Old 08-15-2013
At the moment sftp is not stup on the remote host so ftp would be best at this stage.

operataing system is Aix6.1

Thanks in advance!
# 4  
Old 08-15-2013
You may have to tweak this a little bit as I am on a Linux box and don't have an AIX one to test. But at least I believe this should get you going. Also, I'm no Perl expert but hopefully you will get the point Smilie. The process is performed in 2 steps:
1) Connect to the remote host using ftp and download a listing of the remote directory. Save each file's last modification time and file name to files Dates.txt and Files.txt, respectively.
2) Compare the modification time of each file against the current time minus 30 minutes and if the condition is satisfied, connect again and download the file.
Code:
#!/bin/bash

# Login credentials
user='ftp-user-name' #Do not forget to enclose inside single or double quotes
pass='ftp-password'
directory='/absolute/path/to/remote/ftp/directory/'
host='IP Address or hostname of remote host'

# Set time
# perl -e 'print time' will return the current time in Unix epoch format
# So if you substract 43200, that should give you the current time minus 30 minutes in Unix epoch format:
time=$(perl -e 'print time-43200')

# Connect to host and download the listing of the remote directory
ftp -n $host <<END_GET_LIST
	quote USER $user
	quote PASS $pass
	cd $directory
	ls -l ftpList.txt
	quit
END_GET_LIST
# Disconnect from remote host

# Save the 6th, 7th, and 8th field of the directory listing (i.e. Aug 15 5:15) of each line into file Dates.txt
awk -F ' ' '{print $6,$7,$8}' ftpList.txt > 'Dates.txt'

# Save the 9th field of the directory listing (file name) of each line into file Files.txt
awk -F ' ' '{print $9}' ftpList.txt > 'Files.txt'

linenum=0 #Auxiliary variable for sed.

while read list; do
	linenum=$((linenum+1))
	#Convert the modification datetime of each file to Unix's epoch
	epoch=$(perl -MFile::stat -e "print stat('$list')->mtime")
	if [ $epoch -gt $time ] ; then
		file=$(sed -n "${linenum}p" Files.txt)	#If the condition is satisfied, use sed to get the name of the file
												#in the same line of Files.txt.
#Connect again and download file when the condition above has been satisfied.
		ftp -n $host <<END_RETRIEVE
			quote USER $user
			quote PASS $pass
			cd $directory
			get $file
			quit
END_RETRIEVE
	fi
done < 'Dates.txt'

If someone else in these forums can come with a better way to do this, we'd all be thankful to see it Smilie.
# 5  
Old 08-16-2013
Thanks gacanepa, this is ideal. for some reason it didn't like the print stat ('$list') so I I copied $list into a file and referenced the file instead of variable and it worked strangelySmilie
# 6  
Old 08-16-2013
Quote:
Originally Posted by gefa
Thanks gacanepa, this is ideal. for some reason it didn't like the print stat ('$list') so I I copied $list into a file and referenced the file instead of variable and it worked strangelySmilie
Can you please copy here the output?

And please run this command in your CLI, replacing $list with whatever local file you want:
Code:
perl -MFile::stat -e "print stat('$list')->mtime"

It should look like this:
Code:
perl -MFile::stat -e "print stat('yourfile')->mtime"

And also copy the result of that command.

Last edited by gacanepa; 08-16-2013 at 01:14 PM..

Previous Thread | Next Thread
Test Your Knowledge in Computers #183
Difficulty: Easy
Over 40% of UNIX.com users voted that bash was their most useful shell.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

rsync a file as it gets created and after 3 minutes old

- run a backup job - The jobs creates partial files one after the other, about 2 minutes interval. What i want to do is that while the job is still running or while a file was last modified or created 3 minutes ago, the file should be rsync to a remote server untill the last file has been... (4 Replies)
Discussion started by: malaika
4 Replies

2. UNIX for Beginners Questions & Answers

Find if create time of last created file in a directory is older than 5 minutes

A process xyz is running and creating file1, file2, file3, .... filen. how do i know if the process has stopped and createtime of the last file (filen) is older than 5 minutes? OS is AIX (3 Replies)
Discussion started by: malaika
3 Replies

3. Shell Programming and Scripting

How to send a file in UNIX through email which is created only 15 minutes before the current time?

I wanted to send an email to the client whenever there is failed record created in a /feed/HR-76/failed folder after processing of feed file. I can find out with the help of below script that what is the new file created but that file didn't make just 15 minutes before. ... (1 Reply)
Discussion started by: puneetkhullar
1 Replies

4. Shell Programming and Scripting

Check how many minutes ago the last file created

Hi , I need help in getting how many minutes ago the last file, matching some pattern in file name, was created in a folder. Thanks in advance. (8 Replies)
Discussion started by: Anupam_Halder
8 Replies

5. UNIX for Advanced & Expert Users

Help with get/mget from FTP server with files older than 10 minutes

Hi! I am new to unix and this forum as well.. Can someone please help me : I want to "get/mget" files which are older than 10 minutes from a remote FTP server like "ftp.com". After getting the files to local unix server say "Prod.com" , i need to delete only those files from ftp.com which... (4 Replies)
Discussion started by: SravsJaya
4 Replies

6. Shell Programming and Scripting

delete ftp accounts created in cpanel

i want to delete the extra ftp accounts that are created in cpanel e.g., when you go to cpanel->ftp accounts, any that are not there by default how can i do this via commandline? i am looping through the users on the server where is this info stored? also - how can the password of an... (0 Replies)
Discussion started by: vanessafan99
0 Replies

7. Shell Programming and Scripting

ftp - How to download files which created today?

Hello experts, I have written following script to download files which created today. Unfortunately, it's not working. test.ksh: #Defining variables USR='xxx' PASSWD='yyyy' HT='test.test.com' FILE='S*.pdf' XFILE=$(echo find . -type f -mtime 0) ZFILE=$(echo ls -tR|grep 'Jun 8')... (14 Replies)
Discussion started by: dipeshvshah
14 Replies

8. Shell Programming and Scripting

find files created within 30 minutes

find . -name *.txt -mmin -30 This is working in Redhat but not in Solaris.. What is the equivalent option in Solaris? (1 Reply)
Discussion started by: tene
1 Replies

9. Shell Programming and Scripting

How can i search a file which has been created or modified in last five minutes

Hi Can some one please help me How can i search a file which has been created or modified in last five minutes I have used the command find . -mmin -5 and it does not work i get an error -mmin is bad option Please help Much regards Tarun (2 Replies)
Discussion started by: tarundeepdhawan
2 Replies

10. UNIX for Advanced & Expert Users

How to FTP all newly created but the current open file?

An application running on HP-UX constantly generates new text log files ( I think using logpipe ). Any new file created requires to be ftp'ed to an offline server, however I want to make sure that the current file being written should not be transferred. For examples consider the following files... (3 Replies)
Discussion started by: indianya
3 Replies

Featured Tech Videos