Luc*_*one 63 bash synchronization
我想要一个文件夹的同步副本及其所有子树.
它应该以这种方式自动工作:每当我创建,修改或删除原始文件夹中的内容时,这些更改都应自动应用于sync-folder.
哪个是完成此任务的最佳方法?
顺便说一句:我在Ubuntu 12.04上
最终目标是拥有一个独立的实时备份副本,而无需使用符号链接或mount.我使用Ubuntu One来同步我的计算机之间的数据,过了一段时间出了问题,我的所有数据都在同步过程中丢失了.
所以我想进一步增加一步来保留我的数据的备份副本:
cron
带有rsync
?的脚本可能是?).我需要它只是从A到B的单向方式,对B的任何更改都不能应用于A.受到lanzz评论的启发,另一个想法可能是在启动时运行rsync来备份Ubuntu One下的文件夹内容,并在rsync完成后启动Ubuntu One.
你觉得怎么样?如何知道rsync什么时候结束?
sil*_*gon 70
您可以使用inotifywait
(modify,create,delete,move
启用标志)和rsync
.
while inotifywait -r -e modify,create,delete,move /directory; do
rsync -avz /directory /target
done
Run Code Online (Sandbox Code Playgroud)
Mar*_*tin 18
你需要的东西是这样的: https://github.com/axkibe/lsyncd 它是一个工具,它结合了rsync的和inotify的-前者是镜子,用正确的选项中设置一个工具,一个目录的最后一位.后者告诉内核通知程序目录ot文件的更改.它说:
它聚合并组合事件几秒钟,然后生成一个(或多个)进程以同步更改.
但是-根据数字海洋在https://www.digitalocean.com/community/tutorials/how-to-mirror-local-and-remote-directories-on-a-vps-with-lsyncd -它应该是在Ubuntu存储库!
我有类似的要求,这个工具,我还没有尝试,似乎适合这项任务.
只是对@silgon 答案的简单修改:
while true; do
inotifywait -r -e modify,create,delete /directory
rsync -avz /directory /target
done
Run Code Online (Sandbox Code Playgroud)
(@silgon 版本有时会在 Ubuntu 16 上崩溃,如果你在 cron 中运行它)
使用跨平台fswatch
和rsync
:
fswatch -o /src | xargs -n1 -I{} rsync -a /src /dest
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
84642 次 |
最近记录: |