How to check for change in the directory at FTP server?

I want to get the file from FTP server to local as soon as new file is added in directory on FTP.

I know changes in the directory at local machine can be seen using watchdog observer.

But I want to check for the change in the directory (addition of new file, deletion on file) at FTP server.

How to achieve this?

code i am using to check change in the directory on local machine:-

    from watchdog.observers import Observer
    from watchdog.events import FileSystemEventHandler
    import ftplib
    import time

    class ExampleHandler(FileSystemEventHandler):
          def on_created(self, event): 
                print "Got event for file %s" % event.src_path 

    session = ftplib.FTP('address','username','password')
    path='/directory/to/check'
    session.cwd(path) 
    observer = Observer()
    event_handler = ExampleHandler() 
    observer.schedule(event_handler, path_of_the_directory)
    observer.start()
    try:
       while True:
          time.sleep(1)
    except KeyboardInterrupt:
          observer.stop()

    observer.join()

1 answer

  • answered 2018-11-08 07:59 Martin Prikryl

    The FTP protocol has no API to notify a client about the changes.

    If FTP is your only interface to the remote file system, the only solution is polling the FTP folder for changes periodically.

    See for example Monitor remote FTP directory.