SyncData is a console application that synchronizes files and directories between two specified paths. It ensures that both directories have the same content by copying files and creating directories as needed.
Added | ✅ |
Partially added | |
Not yet implemented | 🛑 |
- Synchronizes files from source to target directory and vice versa. ✅
- Creates missing directories in both source and target directories. ✅
- Displays progress of synchronization with a progress bar. ✅
- Verbose mode for detailed logging. ✅
- Option to log messages to a file. ✅
- Exclude specific files or directories from synchronization.
⚠️ - Upcoming Features:
- Differential synchronization to only copy changed files. 🛑
- Compression support to reduce data transfer size. 🛑
- Network synchronization to sync directories over a network. 🛑
- Preserve file permissions and timestamps. 🛑
- .NET 8.0 SDK or later.
- .NET 8.0 Runtime.
-source=<path>
: Specifies the source directory path-target=<path>
: Specifies the target directory path-v
or-verbose
: Enables detailed output logging-log-file
: Enables logging to file (syncData.log)-exclude=path
or-exclude={path1,path2}
: Excludes specified paths from synchronization
To run the application, use one of the following commands:
dotnet run --project SyncData/SyncData.csproj <source_directory> <target_directory> [-v | -verbose] [-log-file]
SyncData.exe <source_directory> <target_directory> [-v | -verbose] [-log-file]
Replace <source_directory>
and <target_directory>
with the paths of the directories you want to synchronize. Use -v
or -verbose
for verbose output and -log-file
to log messages to a file.
dotnet run --project SyncData/SyncData.csproj "C:\SourceDir" "C:\TargetDir" -v -log-file
SyncData/Program.cs
: Main application logic for synchronizing directories and files.SyncData/Utility.cs
: Contains utility functions for directory synchronization and logging.SyncData/ProgressBar.cs
: Implements a progress bar to display synchronization progress.SyncData/SyncData.csproj
: Project file containing configuration and dependencies.
This project is licensed under the GNU General Public License v3.0.