Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

My bash script for syncing folders between two or three computers

I have two desktops and a laptop. I copied my music into each of them from my flash drive, but since then I have added music from various places and they got badly out of sync. So I decided to use rsync and create a script to run once a month or so. I hope someone finds it useful.

The main problem is that it makes me enter my password five times. I'm trying to learn expect so I can automate that process, if any one can help me with that I would appreciate it. If you have any other improvements, such as making it capable of handling any number of computers, or reducing the amount of code, I would like to hear them as well.

I tried using RSYNC_PASSWORD, but apparently it and --password-file no longer work.

The script runs on mark, my fastest computer. I tried to use it in as many exchanges as possible and my old laptop, robby, in the least amount of exchanges possible.

[code]
#!/bin/bash

# sync -- uses rsync to sync the music folders of two or three computers #

# philipk88
# 2-8-11


#### Functions ####


main()
{
read -p 'What is the ip address of Marvin?>' marvin
read -p 'Is Robby connected to the network?[N/y]>' robbyExist
if [ $robbyExist = y ]
then
read -p 'What is the ip address of Robby?>' robby
remotefile="$marvin:$marvinPath"
toMark
fromMark
remotefile="$robby:$robbyPath"
toMark
fromMark
remotefile="$marvin:$marvinPath"
fromMark
echo "Copying is done"
exit
else
remotefile="$marvin:$marvinPath"
toMark
fromMark
echo "Copying is done"
exit
fi
}


# Displays a pretentious welcome message #
welcome()
{
echo " "
echo " "
echo '#############################################'
echo '# #'
echo '# Welcome to your music syncing program!! #'
echo '# Let the synchronization begin! #'
echo '# #'
echo '#############################################'
echo " "
echo " "
return
}

# Copies the files that only exist on the remote computer to the local file #
toMark()
{
rsync -vzr -e ssh philip@$remotefile /home/philip/Music
return
}

# Copies the files that only exist locally to the remote computer #
fromMark()
{
rsync -vzr /home/philip/Music/ -e ssh philip@$remotefile
return
}


#### Program ####


## Assign Variables ##

marvin=192.168.2.2
marvinPath=/home/philip/arch-share/music/
robby=192.168.2.4
robbyPath=/home/philip/music/

## Display a welcome message ##

welcome

## Call main and get to work ##

main


#### End ####
[/code]
Sign In or Register to comment.