Linux Shell脚本以交互方式同步目录

时间:2020-03-05 15:31:47  来源:igfitidea点击:

该脚本将在两个服务器之间同步两个目录。
基本上,我们使用rsync功能来运行该程序。
脚本将以交互方式请求输入以下详细信息。

1)远程服务器名称或者ip

2)远程系统用户名

3)要同步的本地目录

4)要同步到的远程目录

5)检查用户是否需要复制时间戳并保留权限

脚本同步目录

#Tell with shell to use
#!/bin/bash
#Ask user to enter remote server ip or name
while [[ -z ${RS} ]]
do
echo -n "Remote syncing server ip/name: "
#Save input into variable with name RS
read RS
done
#Ask user to enter remote server user
while [[ -z ${RU} ]]
do
echo -n "Remote syncing server user: "
#Save input into variable with name RU
read RU
done
#Ask user if copy timestamp and preserve permissions, valid input is Yes or No, will ask until valid input
while  [[ "$TS" != "Yes" && "$TS" != "No" ]]
do
echo -n "Copying with timestamp and preserve permissions : Yes/No "
#Save input into variable with name TS
read TS
done
#If user need to copy timestamp and preserve permissions we need to use key -p additionally.
if [ "$TS" = "Yes" ]
then
TS=" -p "
else
#If no need to copy timestamp and preserve permissions, we don't need to use any additional key
TS=""
fi
#Ask user to enter local directory to sync, also check if directory exist
while [[ -z ${LD} || !( -d ${LD}) ]]
do
echo -n "Syncing local directory location: "
#Save input into variable with name LD
read LD
done
#Ask user to enter remote directory
while [[ -z ${RD} ]]
do
echo -n "Remote Syncing directory location: "
#Save input into variable with name RD
read RD
done
echo -n "Syncing ..."
#Run sync with presented parameters
rsync -r $TS ${LD} ${RU}@${RS}:${RD} --progress

脚本输出

#./sync.sh
Remote syncing server ip/name: node246.theitroad.com
Remote syncing server user: linuser
Copying with timestamp and preserve permissions : Yes/No Yes
Syncing local directory location: /home/theitroad/backup/database01
Remote Syncing directory location: /storage/backup/
Syncing …
sending incremental file list
CSR/file
1,120 100%  410.16kB/s    0:00:00 (xfr#1, to-chk=8/10)
CSR/file1
1,110 100%    1.06MB/s    0:00:00 (xfr#2, to-chk=7/10)
CSR/file2
1,675 100%    1.60MB/s    0:00:00 (xfr#3, to-chk=6/10)
CSR/file3
2,479 100%    2.36MB/s    0:00:00 (xfr#4, to-chk=5/10)
CSR/201406/file4
1,110 100%    1.06MB/s    0:00:00 (xfr#5, to-chk=3/10)
CSR/201406/file5
1,679 100%    1.60MB/s    0:00:00 (xfr#6, to-chk=2/10)
CSR/201406/file6
1,115 100%    1.06MB/s    0:00:00 (xfr#7, to-chk=1/10)