1. 同步指令简介
1.1 rsync指令
rsync(Remote Sync),linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
目前已支持跨平台,可以在Windows与Linux间进行数据同步。
rsync指令介绍:
- 可实现本地主机和远程主机上的文件同步(包括本地推到远程,远程拉到本地两种同步方式)
- 可实现本地不同路径下文件的同步
- 无法实现远程路径1到远程路径2之间的同步(scp可以实现)
安装:
# Ubuntu 安装:
sudo apt-get install rsync
# RedHat 安装:
sudo yum -y install rsync
基本用法:
rsync [选项] 源文件/目录 目标路径
- 选项:
-az
:压缩文件传输,节省带宽与传输时间-v
:显示详细的文件传输过程-r
:递归传输,可传输目录及其子目录下所有文件-l
:保留源文件链接属性-p
:保留源文件权限属性--delete
:删除目标目录中源目录中不存在的文件--exclude
:排除指定的文件或目录--progress
:显示传输过程的进度--dry-run
:模拟执行,显示即将执行操作,但不实际执行--bwlimit
:限制传输速率,控制带宽--password-file
:指定密码文件,用于远程服务器身份验证--ignore-errors
:忽略错误,继续传输其他文件
1.2 scp指令
SCP(Secure Copy Protocol),一个用于在本地系统和远程服务器之间复制文件的命令行工具,一种用于在计算机之间安全地传输文件的协议。它通过加密的方式在网络上安全地复制文件。SCP基于SSH(Secure Shell)协议,因此它提供了加密的连接和身份验证,确保数据在传输过程中的安全性。
基本用法:
scp [选项] 源文件/目录 目标路径
- 选项:
-r
:递归传输,可传输目录及其子目录下所有文件-P
:制定SSH端口号-i
:指定身份文件,即私钥文件
2. 简单同步脚本
脚本仅可担任简单学习同步任务,为课后练习。
在某用户/bin目录创建文件xsync
,确保该用户可以在任何目录执行xsync
指令。
cd /home/xxx/bin
vim xsync
简单同步脚本,xsync
代码如下:
#!/bin/bash
if [ $# -lt 1 ]
then
echo Not Enough Arhuments!
exit;
fi
args=("$@")
file=${args[0]}
for ((i = 1 ; i < $#; i++))
do
host=${args[i]}
echo ==================== $host ====================
if [ -e $file ]
then
pdir=$(cd -P $(dirname $file); pwd)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
为用户设定该脚本文件执行权限。
chmod +x xsync
chmod 777 xsync
脚本选项执行参数:
# xsync 文件路径 各主机host...
xsync <file_path> <hosts>...
脚本执行举例:
# 将/tmp/a.txt 文件同步至 myhost1 myhost2 myhost3 三台主机的对应目录(已修改hosts文件,保存静态IP地址)
xsync /tmp/a.txt myhost1 myhost2 myhost3