大家好,又见面了,我是你们的朋友全栈君。
如何编写一个名为xsync的shell脚本(也称为xsync命令),以实现多个电脑或虚拟机之间的文件同步?让我们逐步了解其实现方法和相关问题。
一、xsync命令与rsync命令之间的关系介绍: (1)xsync命令来源于一个xsync脚本,这个脚本不是Linux系统自带的,而是由程序员编写的。 (2)xsync脚本的底层实际上是调用Linux系统自带的rsync命令,来实现多个电脑之间的快速文件同步。 (3)rsync命令可以直接使用:其本质是通过“用户+电脑IP地址”的形式,向其他服务器发送数据,并在其他服务器上创建相同目录和文件。
二、xsync命令的作用: (1)使用xsync命令同步一个文件时,该文件将被同步到其他服务器的相同路径下(如果路径不存在,将自动创建)。 (2)使用xsync命令同步一个目录时,该目录下的所有文件和子目录将被同步到其他服务器的相同路径下(如果路径不存在,将自动创建)。 (3)多次同步同一个文件或目录时,第一次会进行完整同步,之后的同步仅会更新发生更改的部分,未更改的部分不会重复同步。
三、问题描述: (1)Linux系统中不存在xsync命令,但存在类似的sync命令(即,可以使用rsync命令,但不能直接使用xsync命令)。 (2)需要快速实现将一个文件同步到其他电脑上,而不是一个个复制(即,服务器集群中的快速同步命令)。
四、问题原因: (1)Linux系统中缺少xsync脚本。 (2)xsync脚本需要放到Linux系统的“/bin”目录下,这样才能在任何目录下调用xsync命令。
五、解决方法: (1)开启Linux系统的SSH服务:
CentOS8开启SSH服务步骤: 1、首先安装SSH服务(CentOS8默认自带):yum install openssh-server 2、启动SSH服务:systemctl start sshd 3、查看SSH服务状态:systemctl status sshd 4、查看端口(22端口):netstat -antp | grep sshd 5、加入开机启动:chkconfig sshd on
(2)创建一个xsync脚本文件:
vim xsync
(3)将下面的xsync脚本模板拷贝到xsync文件中:
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args
exit
fi
<h1>2 获取文件名称</h1><p>p1=$1
fname=<code>basename $p1
echo fname=$fname</p><h1>3 获取上级目录到绝对路径</h1><p>pdir=<code>cd -P $(dirname $p1); pwd</code>
echo pdir=$pdir</p><h1>4 获取当前用户名称</h1><p>user=<code>whoami</code></p><h1>5 循环</h1><p>for((host=129; host<=132; host++)); do
echo ------------------- hadoop$host -------------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done</code>注意:第五步中的循环rsync命令IP地址部分需要根据实际情况进行修改;rsync命令的使用方法请参考上文。
(4)给xsync脚本添加可执行权限:
chmod 755 xsync
(5)将编写好的xsync脚本文件拷贝到“/bin”目录下:
mv xsync /bin
(6)在任意位置调用xsync命令,向多台服务器同步文件:
xsync命令用法: (1)xsync 路径/文件名 (2)xsync 路径/目录 注意:路径可以是绝对路径,也可以是相对路径
(7)实际测试:如下图所示 1.在一台电脑上执行xsync命令:


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



六、综上所述:上述方法有一个缺陷,即需要输入每台服务器的密码。如果不想输入各台服务器的密码,需要配置SSH私钥公钥,可以参考以下链接: https://www.php.cn/link/54492a88083312aefd7646573eecfc9e
发布者:全栈程序员栈长,转载请注明出处:https://www.php.cn/link/4a86dd8f0c2c59144c9ead3d39b393f8 原文链接:https://www.php.cn/link/c8377ad2a50fb65de28b11cfc628d75c
以上就是解决:如何写一个shell脚本(脚本名称:xsync,也称:xsync命令):实现多个电脑或者虚拟机之间的文件同步?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号