I am trying to transfer a file to a remote Unix server using scp. On that server, there is a service which polls the target directory to detect incoming files for processing. I would like to ensure that the polling service does not pick up new files before the copy is complete. Is there a way of doing that?
My file transfer process is a simple scp command embedded in a larger Java program. Ideally, a solution which did not involve changing the Jana would be best (for reasons involving change control processes).
You can scp the file to a different (/tmp) directory and move the
file via ssh after transfer is complete. The different directory needs to be on the same partition as the final destination directory otherwise there will be a copy operation and you’ll face a similar problem. Another service on the destination machine can do this move operation.
You can copy the file as hidden (prefix the filename with
.) and copy, then moveIf you can modify the polling service, you can check active scp processes and ignore files matching scp arguments.
You can check for open files with
lsof +d $directoryand ignore them in the polling server