07-21-2010, 11:37 PM
Too much time...
FlashFXP Beta Tester
Join Date: May 2005
First things first. The root directory (/) entry in your VFS is invalid for 2 reasons. No local paths should end in a "\" unless it's a drive letter (and that is discouraged, mount a dir on the drive not the drive itself). This is fixed automatically but should be generating a warning to the error.log file the first time the .vfs file is used. The second reason is you cannot use relative links in the .VFS file as of version 7.5.3 (see changelog) because it can confuse the directory caching logic. This should be generating an error message to error.log now, and in earlier releases it should have been a warning message for a long time now...
I'm pretty sure that will fix the problem, but here's some more info for the record...
ioFTPD is pretty smart about RNFR/RNTO. It fully resolves the paths to the source and destination and issues a rename if on the same drive, else it locks the source/destination directories internally and does a per-file/directory copy from one drive to the other...
ioFTPD in general returns the following 3 permission errors messages itself:
"Permission denied" - write protected, generic permission failure, etc
"Permission denied (directory mode)" - rwx, 777, etc
"Permission denied (config file)" - action denied by .ini VFS rule
The first thing to note is your error message: "Access is Denied". This is an error generated by windows itself. Assuming the above VFS changes didn't fix things, can you check the actual permissions on the target directory in windows? Can ioFTPD create dirs and upload files to the location you are trying to copy to?
The other thing to watch out for is permission differences when run as a service. If you are running this as a service, try as a regular user and see if the problem goes away. If it does you'll probably need to setup the service to run as a user instead of under the default Local Service account. This especially applies to network mounted drives as they are not accessible to the Local Service account by default.
I'm aware of several possible issues with moving dirs across filesystems.
1) An active upload in a directory being moved will prevent that file / directory tree from being completely moved. If you are moving a large directory tree I suggest closing the site, waiting for uploads to finish, moving the files, and then opening it again.
2) If you use NTFS mountpoints to mount drive E: on c:\drives\e or something like that the test for using rename verse move will probably fail. This can be fixed in a future release now that ioFTPD knows about NTFS junctions, but for the moment just use the actual path in the .vfs file.
3) ioFTPD doesn't expose any hidden/system dirs for security reasons. You can mount regular dirs UNDER a hidden dir so the whole tree is hidden, but not a hidden dir directly. Also, avoid using drive roots like e:\ where possible and use e:\site or e:\games or something instead... It's possible I haven't updated the move operation to ignore a hidden parent dirs for a move like I have for uploads, etc so let me know if that appears to be the case.
4) Moving a release to/from a merged directory is a bit tricky if the dir exists on multiple drives... This will be addressed in a future release.