在集群部署过程中文件同步分发是一个非常基础的工作,您可以通过 scp、rsync 来分发、同步文件或者文件夹。
scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。如 :
scp -r /jdk root@192.168.1.102:/jdk
rsync 可以理解为 remote sync(远程同步),但它不仅可以远程同步数据(类似于 scp 命令),还可以本地同步数据(类似于 cp 命令)。
不同于 cp 或 scp 的一点是,使用 rsync 命令备份数据时,不会直接覆盖以前的数据(如果数据已经存在),而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分覆盖。
yum -y install rsync
rsync -av /jdk root@192.168.1.102:/jdk
我们可以编写一个自定义脚本工具,一次性将文件同步多台从服务器 :
3.1 在系统用户目录下创建 bin 文件夹并下创建 sh 脚本:
/root/bin/xsync.sh
3.2 编写以下脚本
#!/bin/bash
if [ $# -lt 1 ]
then echo 参数错误
exit;
fi
# 此处配置多台服务器
for host in 192.168.1.102 192.168.1.103
do
echo ------------- $host ----------------
for file in $@
do
if [ -e $file ]
then
pdir=$(cd -P $(dirname $file); pwd)
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file 不存在...
fi
done
done
3.3 测试命令
xsync.sh a.txt