栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

解决:如何写一个shell脚本(脚本名称:xsync,也称:xsync命令):实现多个电脑或者虚拟机之间的文件同步?

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

解决:如何写一个shell脚本(脚本名称:xsync,也称:xsync命令):实现多个电脑或者虚拟机之间的文件同步?

解决:如何写一个shell脚本(脚本名称:xsync,又称xsync命令):实现多个电脑或者虚拟机之间的文件同步?
  • 一·xsync命令与rsync命令之间关系介绍:
      • (1)xsync命令来源于一个xsync的脚本,这个脚本不是Linux系统自带的,是程序员自己写的。
      • (2)xsync脚本的底层,实质是调用Linux系统自带的rsync命令,来实现多个电脑之间的快速文件同步。
      • (3)rsync命令可以直接使用:
  • 二·xsync命令作用:
      • (1)使用xsync命令同步一个文件,会只将这个文件,同步到其他服务器的相同路径下面。
      • (2)使用xsync命令同步一个目录,会将这个目录下面的所有文件以及子目录,同步到其他服务器相同路径下面。
      • (3)多次同步某一个文件或者目录,第一次全部同步,第二次以及之后就只会同步里面发生更改的部分,未更改的部分不会重复同步
  • 三·问题描述:
      • (1)Linux系统中不存在xsync命令,但存在相似命令sync,(即,可以使用rsync命令,但不能使用xsync命令)
      • (2)需要快速实现将一个文件同步到其他电脑上去,不是一个个复制(即,服务器集群中的快速同步命令)
  • 四·问题原因:
      • (1)linux系统中缺少一个xsync脚本
      • (2)xsync脚本需要放到Linux系统的“/bin”目录下,这样才可以在任何目录下边调用xsync命令
  • 五·解决方法:
      • 前提:Linux系统开启了ssh服务
      • (1)创建一个xsync脚本文件
      • (2)将下面的xsync脚本模板,拷贝到xsync文件中去
      • (3)将写好的xsync脚本文件,拷贝到“/bin”目录下边。
      • (4)任意位置调用xsync命令,向多台服务器同步文件
      • (5)实际测试:如下图所示

一·xsync命令与rsync命令之间关系介绍: (1)xsync命令来源于一个xsync的脚本,这个脚本不是Linux系统自带的,是程序员自己写的。 (2)xsync脚本的底层,实质是调用Linux系统自带的rsync命令,来实现多个电脑之间的快速文件同步。 (3)rsync命令可以直接使用:
rsync命令的用法:

rsync -rvl 要拷贝的文件路径/名称 目的用户@主机:目的路径

例如:
rsync -rvl /root/shell/test.sh root@192.168.111.130:/root/shell/
二·xsync命令作用: (1)使用xsync命令同步一个文件,会只将这个文件,同步到其他服务器的相同路径下面。 (2)使用xsync命令同步一个目录,会将这个目录下面的所有文件以及子目录,同步到其他服务器相同路径下面。 (3)多次同步某一个文件或者目录,第一次全部同步,第二次以及之后就只会同步里面发生更改的部分,未更改的部分不会重复同步 三·问题描述: (1)Linux系统中不存在xsync命令,但存在相似命令sync,(即,可以使用rsync命令,但不能使用xsync命令)


(2)需要快速实现将一个文件同步到其他电脑上去,不是一个个复制(即,服务器集群中的快速同步命令) 四·问题原因: (1)linux系统中缺少一个xsync脚本 (2)xsync脚本需要放到Linux系统的“/bin”目录下,这样才可以在任何目录下边调用xsync命令 五·解决方法: 前提:Linux系统开启了ssh服务 (1)创建一个xsync脚本文件
vim xsync
(2)将下面的xsync脚本模板,拷贝到xsync文件中去
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)) 
then
        echo no args
        exit
fi
 
 
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
 
 
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
 
 
#4 获取当前用户名称
user=`whoami`
 

#5 循环
for((host=129; host<=130;host++))
do
        echo ------------------- @192.168.111.$host --------------
        rsync -rvl $pdir/$fname $user@192.168.111.$host:$pdir/
done

注意:第五步循环rsync命令那一段,要结合自己的实际情况,去更改才行;rsync命令使用方法,参考上文所述

(3)将写好的xsync脚本文件,拷贝到“/bin”目录下边。
mv xsync /bin
(4)任意位置调用xsync命令,向多台服务器同步文件
xsync命令用法:
(1)xsync 路径/文件名
(2)xsync 路径/目录
注意:路径可以是绝对路径,也可以是相对路径
(5)实际测试:如下图所示

1.在一台电脑上执行这个xsync命令

2.另外两台电脑上面的相同路径下面,就会出现相同的文件

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/511071.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号