Sync two folders using batch file

3 min read 07-10-2024
Sync two folders using batch file


Keeping Your Files in Sync: A Simple Batch Script Solution

Maintaining identical copies of your files across multiple folders can be a tedious task. Whether you're working on a project with a team, backing up important data, or simply want to ensure consistency, manually copying files can become a chore. Thankfully, a simple batch script can automate this process, saving you time and effort.

This article will guide you through creating a batch script to synchronize the contents of two folders, ensuring they always mirror each other.

The Scenario and Initial Code

Let's imagine you have two folders: "Source" and "Destination". You want to ensure that the "Destination" folder always contains the same files as the "Source" folder. Here's a basic batch script that achieves this:

@echo off
robocopy "Source" "Destination" /MIR /E /W:1 /R:3 /MT:32 /XD "System Volume Information" /LOG+:synclog.txt

echo Synchronization completed.
pause

This script uses the powerful robocopy command to perform the synchronization. Let's break down the code:

  • @echo off: Hides the commands as they run in the console.
  • robocopy "Source" "Destination" /MIR: Copies files and folders from "Source" to "Destination", mirroring the directory structure.
  • /E: Includes empty subdirectories.
  • /W:1: Sets a 1-second wait between retries if an error occurs.
  • /R:3: Retries a failed copy up to 3 times.
  • /MT:32: Specifies the number of threads for concurrent copies (adjust as needed).
  • /XD "System Volume Information": Excludes the hidden system volume information folder from the synchronization.
  • /LOG+:synclog.txt: Creates a log file named "synclog.txt" to record the synchronization process.
  • echo Synchronization completed.: Displays a message confirming the completion of the process.
  • pause: Pauses the script after execution to allow the user to see the results.

Enhancing the Script: Fine-tuning for Precision

This basic script serves as a good starting point, but you can further customize it to suit your needs. Here are some additional options:

  • File Filtering: You can use wildcards to include or exclude specific file types (e.g., *.txt, *.jpg).
  • Deleting Extraneous Files: To remove files in the "Destination" folder that are not present in the "Source", add the /purge option to robocopy.
  • Error Handling: Implement error handling using the if errorlevel command to manage unexpected situations.
  • Scheduling: Schedule the script to run automatically using Windows Task Scheduler, ensuring continuous synchronization.

Example: Syncing Project Files

Imagine you're collaborating on a project with a team. You can use a batch script to synchronize the project folder on your local machine with a shared network drive, guaranteeing everyone has access to the most up-to-date files. Here's how you might modify the script:

@echo off
robocopy "\\server\sharedfolder\project" "C:\My Projects\Project" /MIR /E /W:1 /R:3 /MT:32 /XD "System Volume Information" /LOG+:synclog.txt

echo Project files synchronized.
pause

Replace \\server\sharedfolder\project with the path to the shared network drive and C:\My Projects\Project with the location of your local project folder.

Conclusion

Batch scripting provides a powerful and efficient way to automate file synchronization. With a few lines of code, you can create a script that ensures your files are always in sync across multiple locations. This saves you time and effort, and ensures data integrity by maintaining consistent copies. By understanding the basic structure and incorporating additional options, you can customize the script to meet your specific needs.

Resources and Further Learning