Linux文件拷贝——rsync

本文详细介绍rsync命令的功能选项,如递归复制、压缩传输、进度显示等,并指导如何安装配置rsync服务,实现跨机器文件同步。涵盖rsyncd.conf配置、密码文件设置、防火墙规则调整及常见操作命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rsync命令:

-r 是递归
-l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;
-u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时
--progress是指显示出详细的进度情况
--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致
--password-file=/password/path/file来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。

 

公共的部分

安装rsync

yum -y install rsync 联网安装,两边都要装(手敲)

rpm -qa rsync  查看软件是否安装

服务端

创建文件夹

touch /etc/rsyncd.conf(rsyncd.conf文件内容在本篇文章最下面)

touch /etc/rsyncd.secrets

touch /etc/rsyncd.motd

将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功!

chmod  600  /etc/rsyncd.secrets

配置rsyncd.motd文件(不写也可以,随便写什么内容,只是一个欢迎页面)

配置rsyncd.secrets文件(username:password格式,多个用户换行)

.服务端添加 添加用户:密码.

vim /etc/rsyncd.secrets

root:123456

rsyncd.conf文件配置参数

pid file = /var/run/rsyncd.pid   #此路径不用配置,自动创建,如果配置了会报错(如果已经存在,就去删掉)

port=873       #指定运行端口,默认是873,您可以自己指定

address=192.168.0.144       #服务端IP地址

uid=root       #指定执行的用户和用户组,默认是nobody,可能遇到权限问题,有些文件从服务器上拉不下来

gid=root  

read only=yes   #只读选择,也就是说,不让客户端上传文件到服务器上

hosts allow=192.168.0.145   #允许的IP,多个IP可以用,分隔

max connections=5     #允许最大连接的客户端数

motd file=/etc/rsyncd.motd   #rsyncd.motd文件路径

log file=/var/log/rsync.log    #rsync服务器日志

transfer logging=yes  #传输文件的日志

log format = %t %a %m %f %b  #日志格式

[test]  #自定义模块

path=/opt/u01/  #指定文件目录所在位置,这是必须指定的 

ignore errors  #忽略IO错误

list=yes  #list 意思是把rsync 服务器上提供同步数据的目录在服务器上模块是否显示列出来

auth users=root  #必须系统存在,多个用户用“,”分隔

secrets file=/etc/rsyncd.password   #密码文件的位置

comment=linuxsir home data    #注释(随便啥内容)

exclude = beinan/ samba/ #排除/opt/u01/下的文件夹,多个用空格隔开

[data]  

path=/opt

list=yes

ignore errors

auth users=root

secrets file=/etc/rsyncd.secrets

comment=This is RHEL 4 data 

 

关闭防火墙,

开放873端口:iptables -A  INPUT  -p  tcp  --dport  873  -j  ACCEPT

启动rsync服务端:#/usr/bin/rsync --daemon  --config=/etc/rsyncd/rsyncd.conf

查看状态 lsof -i :873

 首先:我们看看rsync服务器上提供了哪些可用的数据源

rsync  --list-only  root@192.168.145.5::

客户端

vim /etc/xinetd.d/rsync修改参数

客户端disable = no,其他不动。

# default: off

# description: The rsync server is a good addition to an ftp server, as it \

#       allows crc checksumming etc.

service rsync

{

        disable = no

        flags           = IPv6

        socket_type     = stream

        wait            = no

        user            = root

        server          = /usr/bin/rsync

        server_args     = --daemon

        log_on_failure  += USERID

}

rsyncd.conf和rsyncd.motd都不需要配置

touch /etc/rsyncd.secrets

rsyncd.secrets文件(该文件是免密设置,可以不配置,那么需要手动输入密码)格式:密码

vim /etc/rsyncd.secrets

123456

rsync  --list-only  root@192.168.145.5::

 

同步文件

从远程同步文件到本地

rsync -avz --password-file=/etc/rsyncd.password root@192.168.0.144::test /opt/u01/

rsync -avz  密码文件位置 服务端用户名@服务端IP::自定义模块名 同步到本地的地址

本地同步到本地

rsync -avH /uu01/ 192.168.0.131:/hy

rsync -avH 本地目录 本地IP:本地路径

(将本地uu01的文件夹下的文件同步到hy文件夹下)

rsync -avH /uu01 192.168.0.131:/hy

(将本地uu01文件夹(包括里面的文件)同步到hy文件夹下)

从本地同步到远程

read only=no,不然会报错

rsync -av /hy root@192.168.0.130::test

rsync -av 本地路径 远程用户@远程IP::模块名

(将本地的hy文件夹同步到test的模块中的/opt/u01路径下)

 

附件:rsyncd.conf内容


pid file = /var/run/rsyncd.pid
port=873
address=192.168.0.144
uid=root
gid=root
read only=yes
hosts allow=192.168.0.145
max connections=5
motd file=/etc/rsyncd.motd
log file=/var/log/rsync.log
transfer logging=yes
[test]
path=/opt/u01/
ignore errors
read only=no
list=no
hosts allow=192.168.0.145
auth users=root
list=yes
ignore errors
secrets file=/etc/rsyncd.password
comment=this is test
[data]
path=/opt
list=yes
ignore errors
auth users=root
secrets file=/etc/rsyncd.secrets
comment=this is data

完。


 

### 文件从 MacOS 传输到 Linux 系统的方法 #### 使用 `scp` 命令进行文件传输 对于 Mac 用户来说,可以利用内置的命令行工具 `scp` 来实现文件的安全复制。此命令允许用户指定本地路径以及目标服务器的信息,包括用户名、IP 地址和远端存储位置。 ```bash scp /path/to/local/file username@linux_server_ip:/path/to/destination/ ``` 例如,如果要将名为 `example.txt` 的文件发送给 IP 地址为 `192.168.1.100` 的 Linux 主机上的 `/home/user/documents` 目录下,则执行如下指令: ```bash scp ~/Documents/example.txt user@192.168.1.100:/home/user/Documents/ ``` 为了传送整个目录的内容,可以在命令前加上 `-r` 参数表示递归模式[^5]。 #### 利用 `rsync` 工具同步数据 除了 `scp` 外,还有更高效的解决方案——`rsync`。该程序不仅能够完成基本的数据转移任务,而且提供了增量更新功能,在处理大型项目时尤为有用。其语法结构类似于 `cp` 和 `scp` 的组合形式。 ```bash rsync -avz /source/directory/ user@linux_machine:/target/folder/ ``` 这里的选项解释: - `-a`: 归档模式,保持原有属性并递归拷贝; - `-v`: 显示详细过程; - `-z`: 启用压缩以减少网络流量开销; #### 应用 `sftp` 进行交互式文件管理 当需要更加灵活地浏览远程主机上的文件夹或是批量上传多个文件时,可以选择启动基于 SSH 协议的安全 FTP 客户端—即 sftp。只需键入相应的命令即可进入会话状态,并按照提示操作直至结束会话为止。 ```bash sftp user@linux_host_address ``` 一旦建立了连接,就可以像平常那样使用诸如 put/get/list 等常用命令来进行日常维护工作了。 另外,值得注意的是,在开始任何类型的文件交换之前,请务必确认已知目的机器的确切 IP 地址及其开放的服务端口情况。这通常可以通过在 CentOS 终端运行特定命令来获取必要的信息[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值