rsync通过非root账号传输文件到指定目录

===============================================

 2022/7/17_第1次修改                       ccb_warlock

 

===============================================

上周在做sonar数据库恢复时发现postgres备份文件有十几G,而测试服务器提供的账号用scp只能上传到“/home/用户名”目录下。

 

测试服务器的情况:

1. home目录的分区总共只有5个G,空间不支持上传十个G的文件;

2. data目录的分区倒是有500G,但是我没有root账号的使用权限,所以我需要用自己的账号将文件传到指定的data目录下。

 

Scp

首先我尝试用scp做远程传输,但是即使账号有管理员权限,仍然只能传到该账号自己的目录再移到data目录中,查资料也没有支持sudo的方案,所以我放弃了scp这条路。

 

SSH工具

公司电脑是windows的,我使用的Bitvise SSH Client的SFTP不支持使用sudo,所以我也放弃了这条路。

 

Rsync

最后我查到了rsync这个方案,使用了下能满足我的需要。

rsync类似scp做远程传输,并且rsync能使用sudo权限,直接将文件传到指定的目录中,不受必须先传到“/home/用户名”的限制。

 

1)首先需要保证2台服务器都装了rsync

由于我使用的2台服务器都有rsync,不确定centos官方镜像是不是默认安装了rsync,所以如果没安装先安装个rsync

 

2)目标服务器的/etc/sudoers中,增加用户不需要输入密码的配置

假设用户名为abc。

abc ALL=NOPASSWD:/usr/bin/rsync

 

3)接着在备份文件所在的服务器上执行下面的命令,将文件远程传输到目标服务器中

假设备份文件在“/opt/bak/sonar-01.sql”,需要使用账号(abc)传到目标服务器(192.168.1.1)的/data目录下。

rsync -svh --rsync-path="sudo rsync" /opt/bak/sonar-01.sql abc@192.168.1.1:/data

 

 

 

posted @ 2022-07-17 22:59  粽先生  阅读(680)  评论(0编辑  收藏  举报