A Windows Forms application built with VB.NET that provides FTP synchronization and folder cleaning capabilities.
- Bidirectional sync: Local to Remote or Remote to Local
- Automatic connection handling with multiple transfer modes (AutoPassive, AutoActive, PORT)
- Recursive directory sync maintains folder structure
- Progress tracking with real-time updates
- Error resilience continues operation even if some files fail
- Configurable folder cleaning via Settings menu
- Smart detection only cleans folders that exist
- Force delete option removes read-only attributes
- Safe operation deletes contents but preserves folder structure
- Confirmation dialog shows exactly what will be cleaned
- Comprehensive logging with multiple levels (Debug, Info, Warning, Error)
- Log viewer with syntax highlighting
- FTP directory browser to explore remote server structure
- Connection testing with detailed feedback
- Persistent settings stored in
config.ini - Encrypted password storage for security
- Auto-save configuration with debounced updates
- Clean folder customization via Settings dialog
- Download the latest release
- Extract to your desired folder
- Run
RepoFTP.exe
- Windows 10/11
- .NET 8.0 Runtime
- Network access for FTP operations
-
Configure FTP Connection:
- Enter FTP server address (e.g.,
192.168.1.100orftp.example.com:2121) - Provide username and password
- Test connection using the "π Test Connection" button
- Enter FTP server address (e.g.,
-
Select Local Folder:
- Click "Browse" to select your local directory
- This folder will be used for sync operations
-
Configure Remote Path (optional):
- Enter remote folder path (e.g.,
/uploads/or leave empty for root)
- Enter remote folder path (e.g.,
- Select "Local to Remote" option
- Click "π Sync" to upload files from local to FTP server
- All files and subdirectories will be uploaded recursively
- Select "Remote to Local" option
- Click "π Sync" to download files from FTP server
- Maintains directory structure locally
- Go to File β Settings
- Configure folders to clean (comma-separated):
bin,obj,packages,.vs,Debug,Release - Enable/disable force delete for read-only files
- Click "Save"
- Select a local folder for sync
- Click "π§Ή Clean" button
- Review confirmation dialog showing which folders will be cleaned
- Confirm to proceed with cleaning
Settings are stored in config.ini in the application directory:
# FTP Configuration (encrypted)
[FTP]
Server=ftp.example.com
Username=myuser
Password=encrypted_password_here
# Sync Configuration
[Sync]
LocalFolder=C:\MyProject
RemoteFolder=/uploads/
Direction=LocalToRemote
# Clean Configuration
CleanFolders=bin,obj,packages,.vs,Debug,Release
ForceDelete=True- Standard FTP (Port 21)
- Custom ports (e.g.,
server:2121) - Passive and Active modes with automatic fallback
- Various server types (Windows IIS, Linux vsftpd, etc.)
192.168.1.100 # IP with default port 21
ftp.example.com # Domain with default port 21
192.168.1.100:2121 # IP with custom port
ftp.example.com:2121 # Domain with custom port
ftp://192.168.1.100:2121 # Full FTP URL
bin,obj,packages,node_modules,.vs,Debug,Release
dist,build,out,target,.gradle,CMakeFiles
.cache,.tmp,temp,logs,.log
Log files are automatically managed:
- Location: Application directory
- Retention: 7 days (configurable)
- Levels: Debug, Info, Warning, Error, Critical
- View logs: Click "π Logs" button
- Automatic retry with different connection modes
- Detailed error logging for troubleshooting
- Connection timeout protection (30 seconds)
- Network resilience handles temporary disconnections
- Continues on errors doesn't stop entire operation
- Detailed error reporting shows which files failed
- Force delete option handles read-only files
- Permission handling graceful degradation
- Encrypted password storage using Windows DPAPI
- No plaintext passwords in configuration files
- Secure connection handling with certificate validation options
- Local-only storage credentials never transmitted except to FTP server
- Test Connection - Use the test button to verify FTP settings
- Check Firewall - Ensure FTP ports are not blocked
- Try Different Modes - Application automatically tries multiple connection modes
- Verify Credentials - Double-check username and password
- Check Permissions - Ensure read/write access to local folder
- Verify Remote Path - Use FTP browser to confirm remote directory exists
- Review Logs - Check detailed logs for specific error messages
- Free Space - Ensure adequate disk space for downloads
- Close Applications - Ensure no programs are using files in target folders
- Enable Force Delete - Use force delete option for read-only files
- Run as Administrator - May be required for system-protected files
- Check Logs - Review detailed error information
- Visual Studio 2022 or later
- .NET 8.0 SDK
- Windows SDK
git clone <repository-url>
cd RepoFTP
dotnet restore
dotnet build --configuration Release- FluentFTP 52.1.0 - FTP client library
- .NET 8.0 Windows Forms - UI framework
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For issues and questions:
- Check the troubleshooting section above
- Review log files for detailed error information
- Create an issue with:
- Application version
- Operating system
- FTP server type
- Error logs (remove sensitive information)
- Added folder cleaning functionality
- Implemented config.ini support
- Enhanced error handling and logging
- Improved UI with better button layout
- Added Settings dialog for clean configuration
- Initial release
- Basic FTP synchronization
- Encrypted configuration storage
- Log viewer and FTP browser
