两台linux 文件传输 - 两台linux之间传输文件的方法 - 首选 rsync
最近公司服务器要到期了,又不想用原来的那台服务器,于是重新买了一台,就意味着要重新部署,文件迁移,可是诺大众多的文件怎么解决呢,难道要从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目录下
看不懂