Open In App

Linux Shell Script to Sync Directories Interactively

Scripts that sync directories are scripts used to synchronize the contents of two directories. This means that the script will ensure that the two directories have duplicate files and directories and that the contents of the files are the same. There are various ways to sync directories, and the specific approach depends on the requirements of the sync operation. Some common approaches include using a tool like rsync, writing a custom script that compares the directories and copies the necessary files, or using a version control system like Git to track and sync the changes to the directories.

Scripts that sync directories can be useful in various situations, such as when you need to keep the contents of two directories in sync on different machines, or when you want to synchronize the contents of a directory with a backup location.



Approaches for sync directories using scripts

There are various approaches that can be used to sync directories using scripts. Some common options include:

When to use it?

Here are some additional examples of when you might use a script to sync directories:



Advantages

Some advantages of using a script to sync directories include:

Disadvantages

There are also some disadvantages to consider when using a script to sync directories:

Examples to Sync Directories Interactively

1. Using rsync

Here is a simple Linux shell script that will sync directories interactively using the rsync command:

Script:

#!/bin/bash
# Prompt the user for the source and destination directories
echo "Enter the source directory: "
read source
echo "Enter the destination directory: "
read destination

# Sync the directories interactively
rsync -avzi --progress $source $destination

This script will ask the user to enter the source and destination directories, and then it will sync the directories interactively using the rsync command with the following options:

Executing the script:

 

Here is an example of the output of this script when run on the command line:

Output:

 

In this example, the user is prompted to enter the source and destination directories, and then the directories are synchronized interactively using the rsync command. The script displays a progress bar during the transfer, and then a message indicating that the sync is complete.

2. Custom Script

Here is an example of a custom script that synchronizes two directories by comparing the contents of the directories and copying any missing or changed files:

Script:

#!/bin/bash

# Prompt the user for the source and destination 

#directories

echo “Enter the source directory: “

read source

echo “Enter the destination directory: “

read destination

# Sync the directories by comparing the contents

# and copying missing or changed files

for file in $source/*; do

 filename=$(basename “$file”)

 if [ ! -f “$destination/$filename” ] || [ “$file” -nt “$destination/$filename” ]; then

   echo “Copying $filename to $destination”

   cp “$file” “$destination”

 fi

done

# Display a message indicating that the sync is complete

echo “Sync complete!”

Executing the script:

 

Here is an example of the output of this script when run on the command line:

Output:

 

In this example, the user is prompted to enter the source and destination directories, and then the script compares the contents of the directories and copies any missing or changed files from the source directory to the destination directory. The script displays a message for each file that is copied, and then a message indicating that the sync is complete.

Note: Make sure to make the script executable using the chmod +x command before running it.

Conclusion

In conclusion, synchronizing directories is a common task in Linux shell scripting, and there are several methods you can use to do this interactively.  One option is to use the rsync command, which is a powerful utility for transferring files and directories between two locations. The rsync command has a number of options and flags that you can use to customize its behavior, including the -i flag, which prompts the user for confirmation before transferring each file. 

Another option is to use the cp command with the –interactive flag, which prompts the user before overwriting any files in the destination directory. You can also use the find and cpio commands to locate and copy files interactively, or the tar command to create and extract an archive file interactively. Each of these methods has its own advantages and limitations, and the best method for your specific needs will depend on your requirements and the tools available on your system. By writing a custom shell script, you can automate the process of synchronizing directories and customize it to suit your specific needs.


Article Tags :