RSync: How do I synchronize in both directions?
我想使用rsync在两个方向上同步两个目录。
我指的是古典意义上的同步(在rsync手册中不是这个意思):我想更新两个方向的目录,取决于哪一个是新的。
这可以通过rsync完成吗(最好是Linux方式)?如果没有,还有什么其他解决方案?
只需运行它两次,使用"更新"模式(-u或--update标志)加上-t(复制文件修改时间)、-r(递归文件夹)和-v(详细输出查看它在做什么):
1 2 | rsync -rtuv /path/to/dir_a/* /path/to/dir_b rsync -rtuv /path/to/dir_b/* /path/to/dir_a |
这不会处理删除,但我不确定是否有一个好的解决方案来解决只进行周期同步的问题。
你知道Unison文件同步器吗?
Unison is a file-synchronization tool
for Unix and Windows. It allows two
replicas of a collection of files and
directories to be stored on different
hosts (or different disks on the same
host), modified separately, and then
brought up to date by propagating the
changes in each replica to the other. ...
还要注意,它对故障具有弹性:
Unison is resilient to failure. It is
careful to leave the replicas and its
own private structures in a sensible
state at all times, even in case of
abnormal termination or communication failures.
感谢JIVIEW
1 | rsync -urv --progress dir_a dir_b && rsync -urv --progress dir_b dir_a |
这将导致第二次同步在第一次同步结束后立即发生。如果目录结构很大,这将节省时间,因为人们不需要坐在PC前。如果结构很大,请删除冗长和进度的内容。
1 | rsync -ur dir_a dir_b && rsync -ur dir_b dir_a |
使用
例如:
1 | rsync -pogtEtvr --progress --bwlimit=2000 xxx-files different-stuff |
将XXX文件同步到不同的/XXX文件。如果不存在不同的/XXX文件,它将创建它-即复制它。
当您在网络上工作时,p.s.rsync非常重要。对于本地计算机,您可以使用诸如cp之类的命令。
祝你好运!
你需要的是RCLONE。rclone("rsync for cloud storage")是一个命令行Linux程序,用于与不同的云存储提供商(box、dropbox、ftp等)和本地文件系统同步文件和目录。RLONE仅支持镜像同步。
另一个更图形化的解决方案是使用freefilesync,它包括程序realtimesync。freefilesync支持双向同步,包括处理删除。
我用的是
1 | inotifywait -m --exclude"$_LOG_FILE" -r -e create,delete,delete_self,modify,moved_to --format"%w%f""$folder" |
您需要在两台主机上运行