Linux上使用rsync进行文件同步
在Linux服务器之间进行文件同步是服务器管理中常见的操作。本文将介绍如何使用rsync进行Linux服务器文件同步。
简介
rsync是一个在Unix/Linux系统上用来同步文件和目录的工具,可以在两台主机之间通过网络传输进行同步,也可以在本地进行同步。优点是可以增量方式来同步文件,这意味着Rsync仅通过网络传输发生变化的文件内容。这样可以节省大量的网络带宽,并且可以快速同步大量的数据。
安装 rsync
一般情况下,Linux默认已经安装了Rsync,如果未安装,可以使用以下命令进行安装:
$ sudo apt update
$ sudo apt install rsync
rsync 基本使用
rsync命令用法简单,基本命令格式如下:
rsync [option] source destination
其中,source表示源文件或者源目录,destination表示目标文件或目录。这里的“源”和“目标”不是在同一台机器上的目录,可以是另一台机器。
同步本地文件
假设我们在机器A上有一个目录“/data”需要同步到另一台机器B上,步骤如下:
-
在B机器上,创建和A机器上一样的目录。
$ mkdir /data
-
在A机器上执行下面的命令,同步文件到B机器:
$ rsync -a /data user@remote:/data
其中,-a 表示以递归和归档(archive)模式同步,可以保留文件的权限、所有者信息等。
user表示远程机器的登录用户名,也可以使用root登录。remote表示远程机器的IP地址或者网络主机名。
同步远程文件
如果要同步远程机器上的文件,需要在命令中指定远程机器的IP或主机名,同步命令格式如下:
rsync [option] user@remote:/source /destination
例如,将远程机器上的“/data”目录同步到本地“/data_rsync”目录下,可以使用以下命令:
$ rsync -a user@remote:/data /data_rsync
使用rsync同步大文件
当同步大的文件时,可能会对网络带宽造成负担,可以通过rsync的–bwlimit参数来控制传输速度。如限制最大传输速度为200kBytes/s,可以使用如下命令进行同步:
$ rsync --bwlimit=200 -a /data user@remote:/data
使用 rsync 自动同步文件
我们可以定时执行rsync 自动同步文件,这可以用crontab完成。可以使用以下步骤将同步命令添加到crontab中自动执行:
-
打开crontab进行配置
$ sudo crontab -e
-
在打开的文件底部添加以下内容
0 0 * * * /usr/bin/rsync -a --delete /data user@remote:/data
其中,0 0 * * * 表示在每天午夜凌晨0点进行同步,**/usr/bin/rsync表示rsync的可执行文件路径,-a表示以归档的方式同步,–delete表示删除多余的文件。
rsync 常用参数
rsync命令有很多参数,根据实际需求选择适当的参数。常用的参数有:
-r, --recursive 递归处理
-a, --archive 归档模式,同时保留所有文件特性,如权限
和时间属性
-v, --verbose 详细模式输出
-z, --compress 对备份的数据进行压缩处理
--delete 删除目标端没有的源文件
--progress 显示备份过程
--exclude=file_name 排除某个文件
--exclude-from=FILE 从指定的文件中读取排除列表
--password-file 指定文件以获取文件。去掉任何可能泄露密码
的文件权限
总结
Rsync是一个强大的文件同步工具,在Linux服务器管理中应用广泛。通过rsync,我们可以快速高效地同步大量的文件和目录,也可以通过控制传输速度和删除多余文件等功能,实现更加灵活的操作。