新建一个rsync.s文件,把下面的代码写入文件里:
#!/usr/bin/env bash mkdir -p /data/app/rsync/etc/ mkdir -p /data/logs/rsync/ cd /data/download wget https://download.samba.org/pub/rsync/src/rsync-3.1.3.tar.gz tar zxvf rsync-3.1.3.tar.gz cd rsync-3.1.3 ./configure --prefix=/data/app/rsync make && make install echo 'bhtest:123456' > /data/app/rsync/etc/rsyncd.secrets chmod 600 /data/app/rsync/etc/rsyncd.secrets cat > /data/app/rsync/rsyncd.conf <<EOF max connections = 5 # 基本配置,注意uid和gid需要是root,否则无法指定目标文件的所属用户和所属组 secrets file = /data/app/rsync/etc/rsyncd.secrets read only = no write only = no list= yes uid = root gid = root max connections = 5 hosts allow = * #hosts deny = * use chroot = no log file = /data/logs/rsync/rsyncd.log pid file = /var/run/rsyncd.pid # 设置访问的用户必须为rsync,这个用户是虚拟的,不需要在系统中创建这个用户。客户端进行推送的时候指定即可 auth users = bhtest # 设置密码文件位置,这里保存了rsync用户的密码 secrets file = /data/app/rsync/etc/rsyncd.secrets # 配置一个模块,一个模块就是一个可以进行同步的目录,可以配置多个模块意味着接受多个目录的同步请求,模块名是随意起的,客户端在发起同步时需指定模块名 [qrxsusa] path = /data/www/test # 设置访问的用户必须为rsync,这个用户是虚拟的,不需要在系统中创建这个用户。客户端进行推送的时候指定即可 auth users = bhtest # 设置密码文件位置,这里保存了rsync用户的密码 secrets file = /data/app/rsync/etc/rsyncd.secrets EOF #添加开机启动 cat > /data/script/rsync_service.sh <<EOF #!/bin/bash /data/app/rsync/bin/rsync --daemon --config=/data/app/rsync/rsyncd.conf EOF chmod +x /data/script/rsync_service.sh cat >> /etc/rc.local <<EOF /data/script/rsync_service.sh EOF if [[ $? == 0 ]]; then echo -e "\n==========rsync安装成功==========\n\n" else echo -e "\n==========rsync安装失败!==========\n\n" exit 0 fi
客户端上传文件列子:
rsync -avzP --exclude-from=exclude.txt ./ wzb@116.**.1**.**5::test --chown=www:www --progress --password-file=/etc/waptest_tp5.txt rsync -avzP --exclude-from=exclude.txt ./ wzb@116.**.1**.**5::test --chown=www:www --progress --delete --password-file=/etc/waptest_tp5.txt
#/etc/waptest_tp5.txt 密码文件
#exclude.txt 过滤文件
#--delete 参数为完全同步
下载文件列子:
rsync -avz --exclude-from=exclude.txt wzb@4*.**.**.1*1::test ./