Feb 5, 2015

Bash script to transfer files via SCP

#!/bin/bash  
REMOTE_IP="x.x.x.x"
SCP_PASSWORD="mypassword"
expect -c "  
 set timeout 1
 spawn scp -r /Local/SourceFolder uname@$REMOTE_IP:/Remote/DestFolder
 expect yes/no { send yes\r ; exp_continue }
 expect password: { send $SCP_PASSWORD\r }
 expect 100%
 sleep 1
 exit
"  
Save the above script to autoscp.sh and give the execute permission. The SourceFolder is the folder whose contents are sent to DestFolder on the remote host .
$ chmod +x file.sh
$ ./file.sh
Install expect if it's not on our machine, expect  is a program that "talks" to other interactive programs according to a script. We use this in this script to provide the password when asked for by the scp command.
sudo apt-get install expect

Bash script to sync local & remote folder via rsync

#!/bin/bash  
REMOTE_IP="x.x.x.x"
SCP_PASSWORD="mypassword"
#And now transfer the file over
expect -c "  
 set timeout 1
 spawn rsync -azvv -e ssh /Local/SrcFolder uname@$REMOTE_IP:/Remote/DstFolder
 expect yes/no { send yes\r ; exp_continue }
 expect password: { send $SCP_PASSWORD\r }
 expect 100%
 sleep 1
 exit
"  
-a preserves the date and times, and permissions of the files
-z compresses the data
-vv increases the verbosity of the reporting process
-e specifies remote shell to use

Save the above script to autorsync.sh file and give the execute permission.
Refer this Ubuntu documentation for more details on rsync. Both the bash scripts mainly automate the rsync and scp transfer, so that password don't need to be supplied.

Scheduling this rsync and scp scripts to run periodically

Use crontab to schedule these scripts to run periodically. To edit crontab use
crontab -e
Add the below lines
# m h  dom mon dow   command
0 * * * * cd /location/of/script;./autoscp.sh
30 * * * * cd /location/of/script;./autorsync.sh
m - minute
h - hour
dom - day of the month
mon - month
dow - day of the week
0 * * * *  will run the script at 0 minutes every hour, every day of all the months.
30 * * * * will run the script at every 30 minutes on every hour, every day of all the months.

0 comments:

Post a Comment