rsync脚本优化,以及遇到的些问题

服务器的gs会每分钟生成一个日志,最后有一个5分钟的定时任务,将符合条件的日志汇总成一个文件,然后通过rsync传送过去。

台湾版本由于网络问题,存在一些漏报和重复的问题。

网络问题主要有丢包(ping的时候有很多丢包)和其它网络不稳定问题,比如说有的时候快,有的时候就不行。

之前国内的方案是5分钟调用一次,将生产的数据汇总成一个文件,然后rsync过去。整个过程很快,不会存在网络超时等其他问题。

但是台湾就不一样了,由于已经采用了中转机,没有更好的解决方案了。于是只能修改脚本来实现需求。


故改成如下的传送方式(优化脚本)

1.日志正常生成,然后将汇总那个文件放到一个目录中。

2.每次遍历这个目录,如果有上次生成的汇总文件,也尝试rsync一次。

3.如果一直超时,那么总有网络好的时候,会将目录中的汇总文件上报过去

4.如果上报成功,那么就将这个文件移动到备份目录中去


# 遍历文件夹内的所有文件,发送成功一个删一个
ls $rsyncDir > $tempConsumeLogs/rsyncFiles.txt
cat $tempConsumeLogs/rsyncFiles.txt | while read Line
do
{
    name=$Line
    echo "begin send log file: $name"
    cd ..; cd scripts
    /usr/bin/rsync -avzur --progress --password-file=${work_home}/${rsync_key}  ${rsyncDir}/${name}  ${rsyncuser}@$ip_addr::${modename}
    [ $? -eq 0 ] && echo "send $name success !!!!" && mv $rsyncDir/$name $backup_send  #如果发送成功,那么就备份下,否则还在那个目录中
}
done


遇到的问题:rsync: getcwd(): No such file or directory (2)

begin send log file: 2017-12-21-15-15-01-10001_2386574184.log
===/home..tempConsumeLogs/rsyncDir/2017-12-21-15-15-01-10001_2386574184.log 
rsync: getcwd(): No such file or directory (2)
rsync error: errors selecting input/output files, dirs (code 3) at util.c(1042) [Receiver=3.1.0]

为啥会出现这样的问题?

是由于之前机器上本身之前跑了很多rsync进程(脚本写的,5分钟就开一个,结果都没跑完就都卡主了),还有很多目录,也都删掉和kill掉了。

解决方案:切换下目录就好了

cd ..; cd scripts

### rsync 使用指南及常见问题解决方案 rsync 是一个功能强大的文件同步工具,广泛应用于 Linux 和类 Unix 系统中。以下是关于 rsync 的使用方法和常见问题的解决方案。 #### 1. 检查 rsync 是否已安装 在使用 rsync 前,需要确保系统中已安装该工具。可以通过以下命令检查是否已安装: ```bash rpm -qa | grep "rsync" ``` 如果未安装,可以使用包管理器进行安装,例如在基于 Red Hat 的系统上使用 `yum` 或在基于 Debian 的系统上使用 `apt-get`[^2]。 #### 2. 基本语法 rsync 的基本语法如下: ```bash rsync [选项] 源路径 目标路径 ``` 常用选项包括: - `-a`:归档模式,表示递归传输并保持文件属性。 - `-v`:详细模式,显示传输过程中的详细信息。 - `-z`:压缩文件数据在传输过程中。 - `--delete`:删除目标目录中源目录没有的文件[^1]。 #### 3. 配置远程数据同步服务 配置 rsync 远程数据同步服务时,需要编辑 `/etc/rsyncd.conf` 文件,并设置模块名称、路径、权限等参数。启动服务后,客户端可以通过指定模块名进行同步操作[^1]。 #### 4. 实现文件实时同步 为了实现文件的实时同步,可以结合 inotify-tools 工具。inotify 可以监控文件系统的事件变化,并触发 rsync 执行同步任务。具体步骤包括安装 inotify-tools 和编写脚本来监听文件变化[^1]。 #### 5. 常见问题及解决方案 以下是 rsync 使用过程中可能遇到的一些常见问题及其解决方法: - **问题 1**:rsync 同步时出现权限不足错误。 - **解决方法**:确保源和目标路径具有正确的读写权限,或者以 root 用户身份运行 rsync 命令[^2]。 - **问题 2**:rsync 同步速度较慢。 - **解决方法**:尝试添加 `-z` 参数以压缩数据,减少网络传输量;同时检查网络带宽和磁盘 I/O 性能[^4]。 - **问题 3**:rsync 关闭命令报错。 - **解决方法**:检查 rsync 服务配置文件是否存在语法错误,并确保服务已正确启动。 #### 6. Vagrant 中的 Rsync 插件 在 Vagrant 环境下,可以使用 Gatling Rsync 插件来优化文件同步性能。此插件通过减少资源消耗,提高了大型同步文件夹的效率。安装插件后,可通过以下命令手动触发同步: ```bash vagrant rsync-auto ``` 需要注意的是,该插件可能会增加 rsync 操作的频率,因此需根据实际需求调整配置[^4]。 ```python # 示例 Python 脚本:监控文件变化并触发 rsync 同步 import os import subprocess def sync_files(source, destination): subprocess.run(["rsync", "-avz", source, destination]) source_path = "/path/to/source" destination_path = "/path/to/destination" # 触发同步 sync_files(source_path, destination_path) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值