Results 1 to 2 of 2
  1. #1
    Join Date
    Jan 2012
    Posts
    2

    Unanswered: Script to FTP a modified file

    Hello,

    I am fairly new to shell scripting. I see a lot of examples out there of how to find if a file has been modified within a certain period of time. What I'm looking for help with is a script that will run and I'm thinking check for the last 24 hours but if not just check at runtime to see if an HTML file has been modified.

    Then once it determines if the file has changed (I've read this can be done with either checksum or the md5 or md5sum commands) then it will FTP the file. I already have an example of how to connect to an FTP and transfer a file but again since I'm new to shell scripting I'd like some help with this.

    On another forum I found an example of checking for if a file has been modified and printing things out. Since this will run in the background of a website I don't need it to print but I'm going to post the code here:

    #!/bin/sh
    #
    #
    # MD5FILE-parameter specifies where we want to save our md5print for
    # later use.
    MD5FILE=/tmp/.md5savefile

    # The FILE_TO_CHECK-parameter specifies the file we want to monitor
    # changes
    FILE_TO_CHECK=/tmp/filetocheck

    if [ ! -f $FILE_TO_CHECK ]
    then
    echo "ERROR Couldnt locate file to check:$FILE_TO_CHECK"
    exit 1
    fi

    echo "Taking a print on $FILE_TO_CHECK with md5sum"
    MD5PRINT=`md5sum $FILE_TO_CHECK | cut -d " " -f2`

    if [ -z $MD5PRINT ]
    then
    echo "ERROR Recived an empty MD5PRINT thats not valid, aborting"
    exit 1
    else
    echo "MD5PRINT we got was:$MD5PRINT"
    fi

    if [ -f $MD5FILE ]
    then
    echo "Found an old savefile:$MD5FILE we trying to match prints"
    OLDMD5PRINT=`cat $MD5FILE`

    if [ -z $OLDMD5PRINT ]
    then
    echo "Got an empty string from the oldfile, aborting"
    exit 1
    fi

    if [ "$OLDMD5PRINT" = "$MD5PRINT" ]
    then
    echo "New and old md5print are identical, the file hasnt been changed"
    else
    echo "WARNING the old and new md5print doesnt match, the file has been changed"
    fi

    fi

    echo "Saving to new md5print in logfile:$MD5FILE for later checks"
    echo $MD5PRINT > $MD5FILE

    if [ $? = 0 ]
    then
    echo "Wrote to file OK"
    else
    echo "Writing to file failed...why??"
    exit 1
    fi


    I'm looking to modify this code to fit my needs. Any help would be greatly appreciated.

    Thanks

  2. #2
    Join Date
    Sep 2009
    Location
    Ontario
    Posts
    1,057
    Provided Answers: 1
    Use "touch" and "ls -tr"
    Create a file, and then use "touch" to change its last modification date/time to whenever.
    Then use "ls -tr" to list all the files in the directory in chronological order, oldest first.
    Then read this list, and discard all files until you reach the file that you created.
    Process all the files modified after this time, as they will be newer.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •