两台linux 文件传输 - 两台linux之间传输文件的方法 - 首选 rsync

单行、唯一 2     261      运维   0     0
最近公司服务器要到期了,又不想用原来的那台服务器,于是重新买了一台,就意味着要重新部署,文件迁移,可是诺大众多的文件怎么解决呢,难道要从A上慢慢拷贝下来,再上传到B上? 几十GB的文件呢,采用rsync的文件传输,轻松解决。

背景:

1.阿里云云服务器,都是华南1

2.要从云服务器A上把所有文件都迁移到服务器B上   --服务器B上的环境已经做好


原来使用宝塔的一键迁移,以为不是什么问题,可是估计文件太大的原因,实在是太慢了,17个小时了,才迁移25%,而且文件不对,他是采用网站的建站目录来的,这里不说了,反正不是我想要的结果,于是找解决办法


方法

Rsync 命令
 

Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远 程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快


特点
1、可以镜像保存整个目录树和文件系统;
2、可以很容易做到保持原来文件的权限、时间、软硬链接等;
3、无须特殊权限即可安装;
4、优化的流程,文件传输效率高;
5、可以使用rsh、ssh等方式来传输文件,当然也可以通过直接的socket连接;

6、支持匿名传输


命令

rsync /home/wwwroot/test.txt work@192.168.1.10:/home/wwwroot/  #把本地的test.txt文件拷贝到192.168.1.10机器上的/home/wwwroot目录下

rsync root@192.168.1.10:/home/wwwroot/test.txt /home/wwwroot/  #把192.168.1.10机器上的test.txt文件拷贝到本地的/home/wwwroot目录下

rsync root@192.168.1.10:/home/wwwroot/test.txt work@192.168.1.11:/home/wwwroot/  #把192.168.1.10机器上的test.txt文件拷贝到192.168.1.11机器的/home/wwwroot目录下

rsync -r /home/wwwroot/mydir wwwroot@192.168.1.10:/home/wwwroot/  #拷贝文件夹,加-r参数 
rsync -r /home/wwwroot/mydir wwwroot@www.myhost.com:/home/wwwroot/  #使用主机名 
rsync -r -v /home/wwwroot/mydir wwwroot@www.myhost.com:/home/wwwroot/  #显示详情,加-v参数

rsync -r -v --exclude mydir/testdir /home/wwwroot/mydir wwwroot@www.wycto.com:/home/wwwroot/  #排除子目录,注意:--exclude后面的路径不能为绝对路径,必须为相对路径才可以,否则匹配不上,就不会被排除掉。


注意:如果出现以下类似错误

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1518)

请给要同步的文件777的权限

原因是有文件没有写的权限,导致备份数据库权限不够,两种解决办法:

1、将服务端rsyncd.conf配置文件的uid和gid分别修改成root,重载下,/etc/rc.d/init.d/xinetd reload,再次执行同步,同步成功

2、将需要同步的文件夹及下属文件赋予777权限(chmod -R 777 xxx),再次执行同步,同步成功

注意:如果使用第一种办法,那么在执行完同步后,为了安全,记得将uid和gid修改回来,或修改成nobody



我的执行

rsync -r -v root@192.168.1.10:/home/wwwroot /home  #把192.168.1.10机器上的wwwroot文件夹和下面的所有文件拷贝到本地的/home目录下


只有三到五分钟,就全部同步完成了,是不是很快,很方便,支持断点续传,也就是同步的时候,只同步不相同的部分



琢  
1楼

[疑问]

[good]

[黑线]

看不懂

单行、唯一  
啊哈, 难道我写的太难懂了
captcha
忘记密码? 注册
第三方登录
微信赞赏
支付宝赞赏