rsync文件同步

目录

一、rsync 简介
二、rsync 下载、安装
三、rsync 服务器端部署
四、rsync 客户端上传文件
五、参考资料

 

一、rsync 简介

       rsync 用于两台主机间的文件同步,需求是内网可以访问外网,但是外网不能直接访问内网。所以需要一个机制将内网的源码(或者编译好的库)推送到外网。
       这里将文件发起方称为客户端,文件接收方称为服务器端。两端系统都为 Linux。

 

二、rsync 下载、安装

      1、切换到 root(外网机不切 root 无法访问 Internet)

sudo su - root

       2、下载 rsync

wget https://download.samba.org/pub/rsync/src/rsync-3.1.3.tar.gz

       3、解压、编译、安装

tar zxf rsync-3.1.0.tar.gz 
cd rsync-3.1.0
./configure
make && make install

 

三、rsync 服务器端部署

       1、rsync 配置文件
        安装完成后请确保配置文件 /etc/rsyncd.conf 存在,否则请创建后自行填写,否则会报错。配置文件的格式可以在官网找到的文档中找到:https://download.samba.org/pub/rsync/rsyncd.conf.html,简单的配置如下:

uid = zhoutianya
gid = zhoutianya
use chroot = no
max connections =2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 122.224.197.37
hosts deny = 0.0.0.0/32
auth users = zhoutianya
secrets file = /etc/rsync.password
#################################
[backup]
path = /backup

          2、rsync 密码文件
          密码文件在 /etc/rsync.password,如果不存在也许要自行创建:

echo "zhoutianya:aaaaaa" > /etc/rsync.password
chmod 600 /etc/rsync.password 

           3、启动 rsync 后台进程

rsync --daemon

 

 

四、rsync 客户端上传文件

        1、密钥对生成

ssh-keygen -t dsa -P '密码' -f ~/.ssh/dsa_login_key

        密码填上,然后会在 ~/.ssh 目录下上生成公钥和私钥。公钥和私钥的名字一致,均为 dsa_login_key。私钥无后缀,公钥后缀为 .pub 。
        然后将公钥上传到服务器上(我们公司是填在某个网页上...哈哈,简单粗暴),然后本地利用私钥进行登陆。

        2、私钥追加
        进入 ~/.ssh 目录,找到 authorized_keys,如果没有这个文件就创建一个。授予 600 权限,然后将你的私钥追加到这个文件中。

cd ~/.ssh/
chmod 600 ./authorized_keys
cat ./dsa_login_key.pub >> ./authorized_keys

        3、ssh连接测试
        利用 ssh 命令进行私钥连接,连接的IP是服务器端的IP,即外网IP。端口号由 -p 指定,这个需要看外网的 ssh 进程的监听端口是多少。zhoutianya 是用来进行连接的用户身份。

ssh -i ./dsa_login_key zhoutianya@79.110.152.153 -p 20160

        4、rsync 上传文件
        ssh 连接成功后,就可以利用 rsync 上传文件了。首先,在自己的用户 /home/zty 下建立一个文件夹 test 在本地建立一个 test 的文件夹,然后进入 test 创建一个叫 test_upload 的文件,并且输入一段信息 "only for test"。

mkdir test
cd test
touch test_upload
echo "only for test" > ./test_upload

然后调用以下指令进行文件夹传输:

rsync -avz --delete --stats --progress /home/zty/test -e 'ssh -i /root/.ssh/dsa_login_key -p 20460' zhoutianya@79.110.152.153:/home/zhoutianya/test

        -avz 代表参数一般就是这么几个,具体可以看官网的解释, /home/zty/test 是刚才我们自己创建的源目录,-e 'ssh -i /root/.ssh/dsa_login_key -p 20460' 指定了 ssh 连接的私钥地址和目标服务器(外网服务器)的端口号,这个在外网服务器的 /etc/ssh/sshd_config 配置文件中定义, zhoutianya@79.110.152.153:/home/zhoutianya/test 则是需要传输的目标地址,其中zhoutianya是用户,79.110.152.153为外网服务器IP,/home/zhoutianya/test是目标目录。
       --delete、--stats、--progress 是一些可选项。
             a) --delete    :以SRC为主,对DEST进行同步。多则删之,少则补之。注意"--delete"是在接收端执行的,所以它是在:exclude/include规则生效之后才执行的。
             b) --status    :显示文件传输的状态信息。
             c) --progress :显示文件传输的进度信息。

       文件上传前会让你输入密码,就是之前创建密钥对的时候填的那个密码。

Enter passphrase for key '/root/.ssh/dsa_login_key': 
sending incremental file list
test/
test/test_upload

sent 143 bytes  received 39 bytes  17.33 bytes/sec
total size is 14  speedup is 0.08

        注意:如果上传时出现 rsync: recv_generator: mkdir "???" failed: Permission denied (13) 。就是服务器端的相应文件夹权限问题,利用 chmod 修改权限即可。

        5、rsync 排除文件

        最后,我们需要将某些文件夹下的文件排除,不作上传(主要还是为了某些核心源码文件不想上传到外网,只把编译好的库上传即可),可以利用 --exclude-from 参数。
        在 /home/zty/ 下建立一个文件exclude.txt,并且再里面填上需要排除的文件,然后加上如下参数即可。

--exclude-from '/home/zty/exclude.txt'

       

五、参考资料

http://rsync.samba.org/

https://www.cnblogs.com/f-ck-need-u/p/7220009.html

https://www.cnblogs.com/george-guo/p/7718515.html

https://download.samba.org/pub/rsync/

https://www.jb51.net/article/39468.htm

 

发布了37 篇原创文章 · 获赞 461 · 访问量 492万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览