Linux和Windows同步文件
我有两台电脑,一台是linux,一台是windows,想要同步文件,我找到了rsync软件。
1.windows安装cwRsyncServer
下载地址:http://backupassist.com/rsync/,安装方式就不解释了,双击就好了,这里有个输入用户名密码的地方,cwRsyncServer会新建一个你输入的用户名的新用户,这个要记住,以后可能需要用到。
2.在windows服务中启动RsyncServer服务
打开windows服务,启动RsyncServer服务。
3.修改配置文件
在开始菜单中,找到rsync.config配置打开(右键以管理员身份打开)。
添加如下两行
1 | uid = 0 |
这里的 [ test ] 是模块名称,path的格式要注意,修改配置后,要重启Rsync服务(不重启也行,反正我没重启也执行成功了)。
4.在linux上执行rsync命令
1 | ## 说明 ./ 将当前目录的文件,传递到远程服务器命名为test目录下,其中zlc-pc为安装服务端时键入的用户名,后面加上ip地址和::两个冒号 |
这是简单的传递文件的方式,还有其他复杂的参数,可以自行查阅参考文章。执行成功:
1.一个局域网内Windows和linux系统如何共享文件:https://blog.csdn.net/u011531010/article/details/52984041/
2.日常运维–rsync同步工具:https://my.oschina.net/ccLlinux/blog/1859116
3.记linux与Windows之间实现文件实时同步的方案:https://blog.51cto.com/jianglipan/1911676
4.window下安装rsyncServer:https://www.cnblogs.com/zhaojonjon/p/7630613.html
5.Linux下rsync命令使用总结:https://www.cnblogs.com/pengyunjing/p/10416405.html
6.Windows下cwRsync搭建步骤:https://www.cnblogs.com/stragon/p/3831438.html?utm_source=tuicool&utm_medium=referral (这个比较详细)
5.rsync格式
rsync [OPTION]... SRC DEST
rsync [OPTION]... SRC [USER@]HOST:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
rsync [OPTION]... [USER@]HOST::SRC DEST
rsync [OPTION]... SRC [USER@]HOST::DEST
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
对应于以上六种命令格式,rsync有六种不同的工作模式:
1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。如:rsync -a /data /backup
2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:”分隔符时启动该模式。如:rsync -avz *.c foo:src
3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:”分隔符时启动该模式。如:rsync -avz foo:src/bar /data
4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。如:rsync -av root@172.16.78.192::www /databack
5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。如:rsync -av /databack root@172.16.78.192::www
6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.16.78.192/www
6.rsync参数
1 | rsync 参数信息 |
7.rsync拉取远程文件
使用rsync也可以拉去远程文件到本地,输入用户名,ip地址、模块名就可以了。
1 | rsync -avz --progress --partial 用户名@192.168.1.5::模块名/test.txt ./ |
1.rsync拉取远程文件:https://www.cnblogs.com/nerrissa/p/4795811.html (说了很多,但是好像不满足我的要求,使用的是ssh登录)
2.rsync 拉取文件:https://blog.csdn.net/luoganttcc/article/details/99097384 (这里也用到了ssh登录)
3.rsync 通过密码文件实现远程同步:https://blog.csdn.net/huanghanqian/article/details/53612571?utm_source=blogxgwz0
4.linux安装 rsync 客户端和相关权限认证:https://www.cnblogs.com/fanweisheng/p/11327153.html
8.排除某些文件
1 | # 将/home/mysql/backup目录拷贝到/home/mysql/backup2目录下,/root/exclude.list中指定文件不拷贝。 |
exclude.list文件中编写相对于/home/mysql/backup目录的文件或目录,一行一个目录或文件,而不是全路径。比如:排除backup目录下的a文件夹,exclude.list写一行:a,而不是:/home/mysql/backup/a
1 | .git |
1.rsync通过exclude排除多文件/目录实例:https://www.centos.bz/2017/08/rsync-exclude-multiple-file-dir/
2.rsync:仅在一个目录中排除特定文件类型: http://cn.voidcc.com/question/p-yyoigemy-uu.html
常见问题
(1) cwrsync invalid uid nobody
在服务器端的rsyncd.conf文件中添加下面两行:
1 | uid = 0 |
1.cwrsync invalid uid nobody 解决方法:https://blog.csdn.net/enlaihe/article/details/52797794
(2) chdir failed
打开windows端的C:\Program Files (x86)\ICW 安装目录,查看rsyncd.log日志文件,出现了:No such file or directory,表示没有这个文件夹。
打开windows端的rsync.conf配置文件,其中的path, /cygdrive为固定,/c表示c盘,/work表示c盘的work文件夹,在c盘新建一个work文件夹即可,同理,在其他磁盘中的文件夹,只需要填写相应的盘符就好。
如果日志文件中提示的是权限问题,可以根据需要查看参考文章,进行权限的配置。
1.rsync @ERROR: chdir failed 的解决方法:https://www.jb51.net/article/60194.htm
(3) 关于密码的问题
很多参考文章中,写了要生成一个密码文件,但是我用windos做服务端,用linux做客户端,并不需要这么一个文件,也没用生成这么一个文件,等用到的时候再说吧。