Rsync如何同步服务器文件与本地文件

一、rsync命令的用法

在配置完rsync服务器后,就可以从客户端发出rsync命令来实现各种同步的操作。rsync有很
多功能选项,下面就对介绍一下常用的选项:
rsync的命令格式可以为:

1. rsync [OPTION]… SRC [SRC]…     [USER@]HOSTDEST 
2. rsync [OPTION]… SRC [SRC]…     [USER@]HOST:DEST 
3. rsync [OPTION]… [USER@]HOST:SRC     DEST 
4. rsync [OPTION]… [USER@]HOST::SRC     [DEST] 
5. rsync [OPTION]… SRC [SRC]…     [USER@]HOST::DEST
6. rsync [OPTION]… rsync://[USER@]HOST[PORT]/SRC    [DEST] 

rsync有六种不同的工作模式:

1. 拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。 
2.使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST 路径地址包含单个冒号”:”分隔符时启动该模式。 
3.使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC 地址路径包含单个冒号”:”分隔符时启动该模式。 
4. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。 
5. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。 
6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信

息即可。

  下面以实例来说明:

# rsync -vazu -progress terry@192.168.100.21:/terry/ /home

v详细提示
a以archive模式操作,复制目录、符号连接
z压缩
u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时
–progress指显示
以上命令是保持客户机192.168.100.90上的/home/terry目录和rsync服务器上的terry目录同步。该命令执行同步之前会要求你输入terry账号的密码,这个账号是我们前面在rsyncd.secrets
文件中定义的。如果想将这条命令写到一个脚本中,然后定时执行它的话,可以使用–password-file
选项,具体命令如下:

# rsync -vazu -progress –password-file=/etc/rsync.secret 
terry@192.168.100.21:/terry/ /home 

要使用–password-file选项,就得先建立一个存放密码的文件,这里指定为/etc/rsync.secret。
其内容很简单,如下:
terry:12345
同样要修改文件属性如下:

# chmod 600 /etc/rsyncd.secrets 

二、利用rsync保持Linux服务器间的文件同步实例

现在假设有两台Linux服务器A(192.168.100.21)和B(192.168.100.90),服务器A中的
/home/terry和服务器B中的/home/terry这两个目录需要保持同步,也就是当服务器A中文件发生 改变后,服务器B中的文件也要对应去改变。 我们按上面的方法,在服务器A上安装rsync,并将其配置为一台rsync服务器,并将/home/terry 目录配置成rsync共享出的目录。然后在服务器B上安装rsync,因为B只做客户端,所以无需配置。
然后在服务器B,建立以下脚本:

#!/bin/bash 
/usr/loca/rsync/bin/rsync -vazu -progress –delete 
–password-file=/etc/rsync.secret terry@192.168.100.21:/terry/ /home 

将这个脚本保存为AtoB.sh,并加上可执行属性:

# chmod 755 /root/AtoB.sh 

然后,通过crontab设定,让这个脚本每30分钟运行一次。执行命令:

# crontab -e 

输入以下一行:

0,30 * * * * /root/AtoB.sh 

保存退出,这样服务器B每个小时的0分和30分时都会自动运行一次AtoB.sh,AtoB.sh是负责
保持服务器B和服务器A同步的。这样就保证了服务器A的所有更新在30钟后,服务器B也一样取
得了和服务器A一样的最新的资料。

三、其它应用

rsync除了同步文件及目录之外,还可以利用它来实现对远程网站的远程备份。如果再结合脚本
和Crontab就能实现定时自动远程备份。其可以实现与商业化的备份和镜象产品的类似效果,但完全免费

使用实例

1. 本地文件同步到服务器
rsync -zvrtopg --progress --delete 本地项目目录 -e  ssh root@服务器ip:远程项目目录
2. 服务器文件同步到本地
rsync -zvrtopg --progress -e 'ssh -p 22' root@服务器ip:远程项目目录  本地项目目录
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用rsync命令实现本地文件服务器文件同步rsync命令可以将本地文件复制到远程服务器,也可以将远程服务器文件复制到本地。它可以使用SSH协议进行加密传输,还支持增量同步,只传输修改过的文件。 以下是一个示例脚本,可以将本地的文件同步到远程服务器上: ```bash #!/bin/bash # 本地文件夹路径 local_dir="/path/to/local/directory" # 远程服务器信息 remote_host="remote_host" remote_user="remote_user" remote_dir="/path/to/remote/directory" # 使用rsync命令同步文件 rsync -avz --delete -e ssh $local_dir/ $remote_user@$remote_host:$remote_dir/ ``` 在这个脚本中,我们首先定义了本地文件夹的路径和远程服务器的信息。然后使用rsync命令将本地文件同步到远程服务器上。其中,-a选项表示使用归档模式同步文件,-v选项表示输出详细信息,-z选项表示使用压缩传输数据,--delete选项表示删除远程服务器上不存在的文件,-e ssh选项表示使用SSH协议进行加密传输。最后,我们将本地文件夹的路径和远程服务器的信息传递给rsync命令。 你可以将此脚本保存为一个.sh文件,然后在终端中执行它来同步文件。请注意替换本地文件夹路径和远程服务器信息为你自己的信息。 ### 回答2: 要实现本地文件服务器文件同步,可以使用shell脚本来完成。 首先,需要确定同步的目录路径,包括本地和服务器的路径。 然后,可以使用rsync命令来进行文件同步。可以通过命令rsync -avz(-a表示归档模式,保留文件属性,-v表示显示详细信息,-z表示压缩传输)来同步文件。 例如,要将本地目录/path/to/local同步服务器的目录/path/to/server,可以使用以下脚本实现: #!/bin/bash local_dir="/path/to/local" server_dir="user@server:/path/to/server" rsync -avz $local_dir $server_dir 将以上脚本保存为sync.sh文件,并给予执行权限(chmod +x sync.sh)。 然后,在终端中执行./sync.sh即可开始文件同步。 注意,需要正确配置服务器的连接信息,并确保本地和服务器的目录路径正确。 另外,可以根据实际需求添加其他参数,比如排除某些文件或目录、设置带宽限制等。 总结起来,使用shell脚本实现本地文件服务器文件同步的步骤如下: 1. 确定同步的目录路径; 2. 编写脚本,使用rsync命令进行文件同步; 3. 配置服务器的连接信息并确保目录路径正确; 4. 执行脚本开始文件同步。 这样,就可以实现本地文件服务器文件同步了。 ### 回答3: 实现本地文件服务器文件同步的一种常见方法是使用shell脚本结合rsync命令。rsync是一个优秀的文件传输和同步工具,它可以帮助我们在本地文件和远程服务器文件之间实现快速、高效的同步。 首先,我们需要先安装rsync命令。在Linux系统中,可以使用包管理器直接安装,例如使用apt-get命令安装: ``` sudo apt-get install rsync ``` 接下来,我们需要编写一个shell脚本,用于实现同步功能。以下是一个简单的示例脚本: ```shell #!/bin/bash # 本地文件夹路径 local_dir="/path/to/local" # 服务器地址 server="username@remote_server:/path/to/server" # rsync命令实现同步 rsync -avz --delete $local_dir $server echo "同步完成。" ``` 在上述脚本中,我们需要设置本地文件夹路径和服务器地址。其中,`$local_dir`为本地文件夹路径,例如`/home/user/sync_folder`;`$server`为服务器地址,例如`username@remote_server:/home/user/sync_folder`。 rsync命令的选项说明: - `-a`:归档模式,保持文件属性、权限等; - `-v`:显示详细输出; - `-z`:使用压缩传输; - `--delete`:删除服务器上与本地文件夹不匹配的文件。 在脚本的最后,我们使用`echo`命令输出同步完成的提示信息。 保存脚本文件,并设置执行权限: ``` chmod +x sync.sh ``` 最后,只需执行该脚本,即可实现本地文件服务器文件同步: ``` ./sync.sh ``` 这样,每次执行脚本时,将会自动同步本地文件夹和远程服务器上的文件,确保它们保持同步

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值