linux系统下一般都安装了,启用一下就可以了
(1):编辑配置文件
# sudo vi /etc/default/rsync #ubuntu # vi /etc/xinetd.d/rsync #centos
centos:把disable=yse 改为no
ubuntu:RSYNC_ENABLE=true #false改true
启动:
# sudo /etc/init.d/rsync start #ubuntu # systemctl start rsync #ubuntu20 # /usr/bin/rsync --daemon #centos
测试:
# rsync -arHz --progress [email protected]:/usr/local/www/data /usr/local/www/
然后会提示输入密码,OK!
上面是把10.10.0.0的data文件同步到本机的www下面,要是把本机同步过去,反过来写即可
rsync的参数,可以看帮助文档或者网上查找
--progress 传输过程中显示进度
--exclude 忽略目录、文件
-a 归档(压缩)模式,表示以递归方式传输文件,并保持所有文件属性
-r 对子目录以递归模式处理
-H 保留硬链接
-z 在传输过程中进行压缩
--delete 如果发送方有删除的文件,接收方同步删除
--exclude,过滤忽略某些目录和文件,这里有个坑需要注意一下:
比如:/usr/local/a/ 传到 /usr/local/b,忽略掉a/logs,a/config/config.php,这里一定不能写绝对地址,要写相对地址,相对地址是相对发送方而言的,不是当前执行命令的相对地址。
正确写法:
rsync -arHz --progress --exclude "logs" --exclude "config/config.php" /usr/local/a/ /usr/local/b
前面两个排除的文件logs和config.php,其实是从第三个框框里面的目录拼接的。
--log-file='/usr/local/ssh/log/rsync.log' --log-file-format='%t %f %b' #也可以指定保存日志
3:建立主机信任,scp rsync建立链接都需要输入密码,很不方便,我们下面处理一下,直接链接就行,不用输入密码
(1):
# vi /etc/ssh/sshd_config
找到以下内容,并且去掉 #,否则不会在.ssh下生成文件
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
然后重启:
# /sbin/service sshd restart Stopping sshd: [ OK ] Starting sshd: [ OK ]
(2):建立从A服务器到B服务器不用密码,在A服务器上执行ssh命令:
# ssh-keygen -t rsa
按照提示选择yes,然后一直回车,最终会输出:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub. //你的公钥保存在这个位置
The key fingerprint is:
34:85:92:a7:c1:b7:cb:67:6f:1f:3f:ba:7e:fa:ad:06 root@abcdefg
(3):把A服务器的/root/.ssh/id_rsa.pub 文件复制到B服务器
注意:以下都是在B服务器上进行:
(4):写入authorized_keys,我这里的scp和rsync链接都是链接对方的root用户,所以命令:
# cat id_rsa.pub >>/root/.ssh/authorized_keys //root
如果你链接的是其他用户,比如zhangsan,那么就是
cat id_rsa.pub >>/home/zhangsan/.ssh/authorized_keys //zhangsan
注意这里的.ssh文件夹,不是都有的,如果没有的话,需要建立一个
# mkdir .ssh
(5):centos5.5需要复制权限才可以,我们赋下权限
# chmod 600 .ssh/authorized_keys # chmod 700.ssh
这样从A服务器访问B服务器就不用密码了,前提是访问B服务器的root用户,你如果要用其他B服务器上的用户,则还需要密码!
标签:rsync,--,ssh,linux,服务器,root,scp,usr From: https://www.cnblogs.com/buckliu/p/16858490.html