rsync
是 Linux 常用的文件同步的工具,它可以在本地计算机与远程计算机之间,或者两个本地目录之间同步文件
rsync的优势
只传输变化的文件部分,传输效率高。 可以保留原有的权限 支持匿名传输
使用场景
接下来,我们通过几个场景简单来说说它的使用。
✈️本地同步
在本地磁盘中,有两个目录dir1
dir2
想要其内容保持实时同步,可以利用下面命令。
# rsync -a 源目录或文件 目标目录或文件
#dir1下所有文件同步到dir2下
rsync -a /dir1/ /dir2/
参数说明:
-a
选项递归地同步文件,并保留文件属性,如文件权限、组和用户所有权、修改时间、符号链接等。
☢️远程同步
将本地机器的文件,如何同步到公网服务器呢?在配置之前,我们需要配置ssh密匙对,方便无密码登录远程服务器。
首先,在本地服务器执行命令
ssh-keygen -t ed25519 -C "[email protected]"
-t ed25519: 使用更安全的Ed25519算法(可选RSA:-t rsa -b 4096)。
提示输入保存路径时,按回车使用默认路径(~/.ssh/id_ed25519)。
设置密钥密码(可选,直接回车跳过)。
复制公钥到远程服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@remote_host
完成后,免密测试
ssh [email protected].***.***
文件上传测试:
将本地dir1
目录下的文件,上传到远程服务器的 /home/data
目录。
rsync -avz --progress dir1/ [email protected]:/home/data/
😘单向同步
适用于本地为主,远程为辅。 创建同步脚本(如 sync.sh
):
#!/bin/bash
rsync -avz --delete --progress /path/to/dir1/ [email protected].***.***:/home/data/
添加权限后,在添加定时任务。
chmod +x sync.sh
#配置定时任务,5分钟执行一次。
crontab -e
*/5 * * * * /path/to/sync.sh >> /var/log/sync.log 2>&1
📧实时同步
使用 inotify-tools
监听本地目录变化后自动触发同步: 首先,我们创建一个同步脚本
#!/bin/bash
DIR="/path/to/dir1"
REMOTE="[email protected].***.***:/home/data/"
while inotifywait -r -e modify,create,delete,move $DIR; do
rsync -avz --delete --progress $DIR/ $REMOTE
done
然后,后台运行脚本。
nohup ./realtime_sync.sh > sync.log &
总结
利用rsync可以方便高效的做好文件备份和同步工作。此外还有其他优秀的工具,如unison
,适合于双向同步。有兴趣的可以试试。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...