分享我写的win版rsync脚本

结论:脚本直接解决win与linux同步问题。

k_rsync_winfromlinux.ps1 :从linux同步到win。
路径问题:自动处理cygwin路径转换,如c:users路径。

k_rsync_wintolinux.ps1 :从win同步到linux。
免添加known_host:自动处理ssh known_hosts。

参数封装:常用rsync参数已封装,debugging参数支持调试。
系统需求:win+powerShell5 .1 /7 以上,linux需安装rsync。

用例:从win到linux。
. k_rsync_wintolinux.ps1 -Path 'e:temp7 ' -Destination '/tmp/' -被控机ip地址 '1 9 2 .1 6 8 .1 .2 ' -Recurse -Delete -debugging
从linux到win同理。
调试:debugging输出命令,支持暂停。
下载:gitee链接 https://gitee.com/chuanjiao1 0/kasini3 000
你自己掂量。

求助: linux下怎么实现两个文件夹的同步(shell脚本)

说实话,你说的这事儿挺常见的。
我之前搞过一次,当时用的是rsync,配合一些参数,效率挺高的。

你想想啊,用ls -R -1 生成文件列表这步其实有点啰嗦。
直接用rsync -n干就行,它会给你列出一个对比结果,但不会实际操作。
比如你这么干: bash rsync -n --itemize-changes source/ destination/
这一命令会告诉你,哪些文件需要创建、修改或者删除。
--itemize-changes这个参数是关键,它会用c(创建)、u(更新)、d(删除)这种字母标示变化类型。

等你看完这个预览,觉得没问题了,直接把-n去掉就行: bash rsync --itemize-changes source/ destination/
这时候它就会真的执行操作了。
如果你只想同步特定类型文件,比如文本文件,可以加个--exclude参数,比如--exclude='.log'。

至于双向同步冲突的问题,你说的对,这确实是个硬骨头。
我之前试过用简单的脚本处理,比如检查文件最后修改时间,或者文件大小。
但真遇到两个地方同时改了内容,而且改动还不冲突的时候,这事儿就复杂了。
我有个朋友当时搞了个hash校验,改了文件就重新计算hash值,但这需要额外存储空间,而且效率有点低。

其实你说的git或svn是好思路。
我有个项目就是用git来同步的,虽然不是直接文件夹同步,但效果类似。
你把文件夹内容git init一下,然后添加文件,commit。
另一台机器也clone过来,pull一下就同步了。
好处是版本控制,坏处是每次操作都得git命令,稍微麻烦点。
如果文件夹特别大,init和commit也挺慢的。

我后来发现有个工具叫unison,专门做双向同步的。
没试过,但看文档感觉挺强大的。
它有冲突解决机制,比如改了相同行数可以自动合并,改了不同行数会提示手动解决。

说白了,简单同步用rsync就行,复杂同步还得看具体需求。
你说的用版本管理是个大方向,但落地要考虑成本和操作复杂度。
我目前还在找那个完美平衡点,还没找到。

工具分享之文件同步工具FreeFileSync(1)

说白了,FreeFileSync是一款超级实用的文件同步工具,其实很简单,它能够帮你自动备份重要文件,避免手动复制带来的繁琐。

先说最重要的,FreeFileSync支持多平台,无论是Windows、macOS还是Linux,都能用。
它有几个核心功能,比如同步设置、另存为批处理作业等。
去年我们跑的那个项目,大概3 000量级的数据,就是靠这个工具同步的,效果杠杠的。

另外一点,同步设置里有个细节挺关键的。
比较规则有文件时间、大小和内容三种选项,通常选择文件时间和大小进行比较,因为这样更高效。
还有过滤规则,可以设置不进行同步的文件名称,避免不必要的备份。

我一开始也以为同步规则就是随便选一个,后来发现不对,双向、镜像、更新和自定义四种模式各有用途。
比如镜像模式,就是创建源文件的镜像备份,特别适合需要完整备份的场景。

还有个事,很多人没注意,FreeFileSync的另存为批处理作业功能非常实用。
你可以设置定时任务,实现自动化备份。
比如,把“E:\test02 ”文件夹镜像备份到“E:\test”,步骤简单,效果明显。

不过,这里有个坑需要注意,通过“RealTimeSync”程序,虽然可以实现本地文件或Windows共享文件的定时镜像同步,但对于通过FTP或SFTP访问的在线文件,这个程序就派不上用场了。

所以,我觉得值得试试FreeFileSync,不过在使用时,要注意它对在线文件的局限性。
你有什么想法或者经验吗?留言聊聊吧。