Linux下 rsync远程同步带密码

rsync远程同步如果不进行设置,需要输入密码,显然这在脚本运行中不可用

问题:rsync如何带密码进行远程同步,不需要再次输入密码呢?

解决方法:设置新的rsync远程同步账号密码

注意:解决方法很多,可以用环境变量,也可以用ssh秘钥,但相对的,这种方式比较安全

下面示例是从客户端192.168.1.100同步到服务端192.168.1.200

一、首先先安装rsync(安装方法很多,自己去搜,不知道的可以留言评论) 

客户端服务端都需要安装rsync

二、配置远程账号密码

1. 先看下服务端配置

vim /etc/rsyncd.conf

有些可能没有这个文件,没关系,没有的就自己新建一个

配置文件的内容如下

# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

uid = root
gid = root
use chroot = no
max connections = 20
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
lock file = /var/run/rsync.lock
read only = false

# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

# [ftp]
#        path = /home/ftp
#        comment = ftp export area

[book_chapter]
path = /www/wwwroot/hyapi/static/block/book/
auth users = ytsync
secrets file = /etc/rsyncd.passwd

其中 auth users = ytsync 就是设置虚拟账号

secrets file = /etc/rsyncd.passwd 设置密码文件

设置完配置文件后,显然要去设置密码

echo "rsync_yc:123456" > /etc/rsyncd.passwd

设置权限

chmod 600 /etc/rsyncd.passwd # 注意权限 

查看服务是否开启

ps -ef|grep rsync  |grep -v grep

如果开启,杀掉进程

kill -9 端口号 

启动重启rsync

rsync --daemon 

如果你的配置文件是在etc下,可以直接使用rsync --daemon重启,如果不是,这要加config=配置文件路径

例如:rsync --daemon --config=/var/rsyncd.conf

重启可能会报错

failed to create pid file /var/run/rsyncd.pid: File exists

解决方法:rm -rf /var/run/rsyncd.pid;再重新启动Rsync服务(rsync --daemon) 

2. 客户端配置

客户端创建一个文件,爱在哪建在哪建。如 /var/rsync/rsync.pass 然后文件里面就写密码就完事了。   比如  123456  就完了,不需要别的。然后在你输入rsync命令时加上--password-file=/etc/rsync.pass  参数 指定密码文件在哪就Ok  有个坑 密码文件必须 600 访问权限

 操作步骤

echo "123456" > /var/rsync/rsync.pass

 chmod 600 /var/rsync/rsync.pass

三、运行同步命令

rsync -avz --password-file=/var/rsync/rsync.pass /home/book/ rsync_yc@192.168.1.200::book_chapter

运行可能会报错

rsync: failed to connect to 120.55.58.172 (120.55.58.172): Connection timed out (110)
rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2]

解决方法:

ps -ef|grep rsync  |grep -v grep        先确定下服务是否已经开启,没有就去开启在重试一下

netstat   -nultp         如果服务已经开启,看下是否有rsync的873端口

如果上面的都没问题,那就是服务器安全组没开放端口,添加下即可

四、附录

配置文件其他常用的配置参数

comment = BACKUP attachment           # 注释
ignore errors              # 忽略一些无关的IO错误
read only = false          # 设置为非只读,即可以传至服务器的相应目录。
list = false                # 不允许列文件
exclude = test/ test.php      #设置不同步的目录或文件用空格隔开

hosts allow = all     #允许连接服务器的主机IP地址,如果多个ip则用空格隔开
hosts deny = 172.25.0.0/24  #禁止连接服务器的主机IP地址,也可为*,表示所有。

两种 rsync 服务运行方式都需要配置 rsyncd.conf,其格式类似于 samba 的主配置文件

全局参数

在全局参数部分也可以定义模块参数,这时该参数的值就是所有模块的默认值

address --在独立运行时,用于指定的服务器运行的 IP 地址;由 xinetd 运行时将忽略此参数,使用命令行上的 –address 选项替代。默认本地所有IP

port --指定 rsync 守护进程监听的端口号。 由 xinetd 运行时将忽略此参数,使用命令行上的 –port 选项替代。默认 873

motd file --指定一个消息文件,当客户连接服务器时该文件的内容显示给客户

pid file --rsync 的守护进程将其 PID 写入指定的文件

log file --指定 rsync 守护进程的日志文件,而不将日志发送给 syslog

syslog facility --指定 rsync 发送日志消息给 syslog 时的消息级别

socket options --指定自定义 TCP 选项

lockfile --指定rsync的锁文件存放路径

timeout = 600 --超时时间

模块参数

模块参数主要用于定义 rsync 服务器哪个目录要被同步。模块声明的格式必须为 [module] 形式,这个名字就是在 rsync 客户端看到的名字,类似于 Samba 服务器提供的共享名。而服务器真正同步的数据是通过 path 来指定的

基本模块参数

path --指定当前模块在 rsync 服务器上的同步路径,该参数是必须指定的

comment --给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户

模块控制参数

use chroot = --默认为 true,在传输文件之前首先 chroot 到 path 参数所指定的目录下;优点,安全;缺点,需要 root 权限,不能备份指向 path 外部的符号连接所指向的目录文件

uid = --指定该模块以指定的 UID 传输文件;默认nobody

gid = --指定该模块以指定的 GID 传输文件;默认nobody

max connections --最大并发连接数,0为不限制

lock file --指定支持 max connections 参数的锁文件。默认 /var/run/rsyncd.lock

list --指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出。默认为 true,显示

read only = --只读选择,也就是说,不让客户端上传文件到服务器上。默认true

write only = --只写选择,也就是说,不让客户端从服务器上下载文件。默认false

ignore errors --忽略IO错误。默认true

ignore nonreadable --指定 rysnc 服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些不应该被备份者获得的文件时是有意义的。 false

timeout = --该选项可以覆盖客户指定的 IP 超时时间。从而确保 rsync 服务器不会永远等待一个崩溃的客户端。对于匿名 rsync 服务器来说,理想的数字是 600(单位为秒)。 0 (未限制)

dont compress --用来指定那些在传输之前不进行压缩处理的文件。该选项可以定义一些不允许客户对该模块使用的命令选项列表。必须使用选项全名,而不能是简称。当发生拒绝某个选项的情况时,服务器将报告错误信息然后退出。例如,要防止使用压缩,应该是:”dont compress = *”。 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

模块文件筛选参数

exclude --指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 exclude 列表中。这等同于在客户端命令中使用 –exclude 来指定模式

exclude from --指定一个包含 exclude 规则定义的文件名,服务器从该文件中读取 exclude 列表定义

include --指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 include 列表中。这等同于在客户端命令中使用 –include 来指定模式

include from --指定一个包含 include 规则定义的文件名,服务器从该文件中读取 include 列表定义

模块用户认证参数

auth users --指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块(和系统用户没有任何关系)。用户名和口令以明文方式存放在 secrets file 参数指定的文件中。默认为匿名方式

secrets file --指定一个 rsync 认证口令文件。只有在 auth users 被定义时,该文件才起作用。文件权限必须是 600

strict modes --指定是否监测口令文件的权限。为 true 则口令文件只能被 rsync 服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认为true

模块访问控制参数

hosts allow --用一个主机列表指定哪些主机客户允许连接该模块。不匹配主机列表的主机将被拒绝。默认值为 *

hosts deny --用一个主机列表指定哪些主机客户不允许连接该模块

模块日志参数

transfer logging --使 rsync 服务器将传输操作记录到传输日志文件。默认值为false

log format --指定传输日志文件的字段。默认为:”%o %h [%a] %m (%u) %f %l”

设置了”log file”参数时,在日志每行的开始会添加”%t [%p]“;

可以使用的日志格式定义符如下所示:

%o --操作类型:”send” 或 “recv”

%h --远程主机名

%a --远程IP地址

%m --模块名

%u --证的用户名(匿名时是 null)

%f --文件名

%l --文件长度字符数

%p --该次 rsync 会话的 PID

%P --模块路径

%t --当前时间

%b --实际传输的字节数

%c --当发送文件时,记录该文件的校验码

另外可参考另一篇文章Linux下Rsync+sersync实现数据实时同步_yaodunlin的博客-CSDN博客

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Rsync是一种在Linux系统中使用的文件同步工具,它可以在本地或远程服务器之间同步文件和目录。以下是安装和配置Rsync的步骤: 1. 安装RsyncLinux系统中,可以使用以下命令安装Rsync: Ubuntu/Debian系统: sudo apt-get install rsync CentOS/RHEL系统: sudo yum install rsync 2. 配置Rsync 在使用Rsync之前,需要进行一些配置。可以在/etc/rsyncd.conf文件中进行配置,该文件包含了Rsync的配置信息。 首先,需要创建一个Rsync用户,并为其设置密码: sudo useradd rsync sudo passwd rsync 然后,在/etc/rsyncd.conf文件中添加以下内容: uid = rsync gid = rsync use chroot = no max connections = 4 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log [backup] path = /home/backup/ comment = Backup directory read only = no list = yes auth users = rsync secrets file = /etc/rsyncd.secrets 其中,[backup]是同步目录的名称,path是同步目录的路径,auth users是允许访问该目录的用户,secrets file是存储密码的文件。 最后,需要创建一个密码文件/etc/rsyncd.secrets,并将用户名和密码添加到该文件中: rsync:password 其中,rsync是用户名,password是密码。 3. 启动Rsync 完成配置后,可以使用以下命令启动Rsync: sudo rsync --daemon 现在,Rsync已经成功安装和配置,可以使用rsync命令进行文件同步了。例如,将本地目录/home/local同步到远程服务器的/backup目录: rsync -avz /home/local/ rsync@remote:/backup/ 其中,-a表示同步所有文件和目录,-v表示显示详细信息,-z表示压缩传输。remote是远程服务器的IP地址或主机名,rsync是用户名。 ### 回答2: rsync是一种快速、灵活、可靠的文件同步和备份工具,适用于Linux、Unix、Mac等系统,它可以通过本地网络或者互联网对文件进行远程同步和备份。下面是在Linux系统下安装和配置rsync的详细步骤: 一、安装rsync 通常情况下,rsync都已经默认安装在Linux系统中,如果不确定是否已经安装,可以通过以下命令进行检查: ``` rsync --version ``` 如果显示出版本信息,则说明已经安装,否则需要执行命令进行安装。 在Debian和Ubuntu系统中,可以通过以下命令进行安装: ``` sudo apt-get install rsync ``` 在CentOS和Red Hat系统中,可以通过以下命令进行安装: ``` sudo yum install rsync ``` 二、配置rsync 1. 配置rsync服务器 要配置一个rsync服务器,首先需要创建一个目录(例如/var/backup),作为rsync同步和备份的目标文件夹。然后通过编辑/etc/rsyncd.conf文件进行配置,可参考以下示例: ``` uid = root gid = root max connections = 10 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsync.log [backup] path = /var/backup comment = Backup directory read only = no list = yes auth users = backupuser secrets file = /etc/rsyncd.secrets ``` 其中,[backup]是配置文件夹的名称,path是需要同步和备份的目标文件夹,auth users为需要授权的用户,在/etc/rsyncd.secrets文件中定义。 2. 添加授权用户 在/etc/rsyncd.secrets文件中,可以添加授权用户并设置密码,可参考以下示例: ``` backupuser:password ``` 然后对/etc/rsyncd.secrets文件进行权限设置: ``` sudo chmod 600 /etc/rsyncd.secrets sudo chown root:root /etc/rsyncd.secrets ``` 3. 启动rsync服务器 要启动rsync服务器,可以通过以下命令: ``` sudo rsync --daemon --config=/etc/rsyncd.conf ``` 4. 测试rsync服务器 要测试rsync服务器是否正常运行,可以在另一台Linux机器上执行以下命令: ``` rsync -avz backupuser@192.168.1.100::backup /var/backup ``` 其中192.168.1.100为rsync服务器的IP地址,backup为在/etc/rsyncd.conf配置文件中设置的[backup]名称,/var/backup为本地同步和备份的目标文件夹。 三、使用rsync同步 要使用rsync进行同步和备份,可以执行以下命令: ``` rsync -avz /path/to/source backupuser@192.168.1.100:/var/backup ``` 其中/path/to/source为需要同步和备份的源文件夹,192.168.1.100为rsync服务器的IP地址,/var/backup为在/etc/rsyncd.conf配置文件中设置的[backup]名称,需要授权用户backupuser的账号和密码。 这是rsync的简单安装和配置过程,可以根据实际情况进行扩展和调整。 ### 回答3: rsync是一种可靠的文件同步工具,可以在不同的主机之间进行文件同步和备份。在Linux系统中,rsync是非常常用的工具之一,本文将介绍如何安装和配置rsync。 一、安装rsync 在不同的Linux版本中,rsync的安装方法可能会略有差异,一般通过包管理工具进行安装即可。以Ubuntu为例,可以通过以下命令安装: sudo apt-get update sudo apt-get install rsync 二、配置rsync 在使用rsync进行文件同步之前,需要进行相应的配置。 1. 创建rsync配置文件 可以在/etc目录下创建一个rsyncd.conf文件,用于存放rsync的配置信息。 sudo nano /etc/rsyncd.conf 2. 配置rsync服务端 (1)设置运行rsync的用户和组 在rsyncd.conf文件中添加一行: uid = username gid = groupname 其中,username和groupname是指定的用户和组。 (2)设置rsync共享模块 添加以下内容: [module_name] path = /path/to/directory comment = module description writeable = yes list = yes 其中,module_name是共享模块的名称,path定义了共享的路径,comment是注释信息。 (3)设置rsync服务的日志 可以为rsync服务设置错误和日志文件: log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid (4)设置rsync服务的端口号 可以通过端口号来限制服务器与客户端之间的访问。 port = 873 3. 配置rsync客户端 在使用rsync进行文件同步之前,需要在客户端进行相应的配置。 (1)创建一个rsync配置文件 创建一个rsync配置文件,存放在/home/user/.rsyncd.conf中。 sudo nano /home/user/.rsyncd.conf (2)配置rsync同步 在rsync配置文件中添加以下内容: [module_name] path = /path/on/remote/server comment = module description 其中,module_name是共享模块的名称,path定义了共享服务器上的路径。 (3)使用rsync同步文件 使用以下命令即可进行同步: rsync -avz /path/to/source user@remote_server:/path/on/server 其中,-a表示同步所有的目录和文件属性,-v表示打印出详细信息,-z表示启用压缩。 4. 启动rsync服务 可以使用以下命令启动rsync服务: sudo systemctl start rsync 5. 配置rsync服务的开机启动 可以使用以下命令配置rsync服务的开机启动: sudo systemctl enable rsync 6. 设置防火墙 在使用rsync进行文件同步时,需要在防火墙中打开873端口,允许客户端和服务器之间的通信: sudo ufw allow 873 通过以上步骤,就可以在Linux系统中安装和配置rsync了。rsync是一款强大的文件同步工具,可以帮助我们更好地进行文件备份和同步。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值