Michael Petrusha <[EMAIL PROTECTED]> wrote:
> That would mean transferring each file and calculating it's size, right?

No.  I do not think you understand my suggestion.

I am suggesting that lftp, as it traverses the local directory tree,
saves a hash value for each local file in a file (it could be a single
file in the root of the local tree, or one file per directory of the
local tree).  Because I am using the --ignore-time option, lftp
ignores the file timestamps and uses only the file sizes to decide
whether to upload a local file.  This works fine, except when a local
file is changed but the size does not change.  Currently, lftp ignores
this changed file because it has the same size as the remote file.  I
am suggesting that, in this situation, lftp would calculate a hash
value for the local file, then compare this hash value to the hash
value saved in the hash values file.  If the hash values are
different, then lftp would know that the local file has been modified
since the last time it was run and would upload the changed local file
instead of ignoring it.

The advantage of this approach is that lftp does not have to access
the remote files when determining which local files need to be
uploaded.  However, it does have some problems.  For example, what
happens if lftp is used to reverse mirror a local tree, then some
other process is used to do the same before lftp is run again.  The
other process may have already uploaded the changed local files.  In
this case, lftp would not know because the other process did not
update lftp's hash values file(s).  Consequently, lftp may end up
unnecessarily uploading local files that are already in sync with the
remote tree.

Another option is for lftp to compare the local and remote files when
the --ignore-time option is enabled and both files have the same size.
 This should work OK for my application of publishing changed Web
pages since the files that would need to be compared are small, but it
may be impractical with larger files.

I think this is a problem that needs to be solved with Forrest rather
than lftp, so that lftp can use local file timestamps and avoid having
to deal with the problem of local and remote files being the same
size.

Dag:

The problem with using rsync is that I have only FTP access to the
remote host.  I can use curlftpfs to mount the tree on the FTP server
as a local mount point.  I tried using rsync with this curlftpfs file
system, but did not have satisfactory results.  I can't remember what
the problem was, maybe timestamps or slowness.  rsync might be a
practical solution if I had access to the remote host via SSH, but I
do not. :(

Brolin

Reply via email to