Unison / Rsync;使用sftp上传用户的镜像目录

时间:2018-04-05 11:35:45

标签: synchronization unison

我知道有关此主题的数百个问题。但我从来没有找到一个明确的例子。

我创建了两个用户,一个是开发人员,另一个是sftp上传用户。 sftp上传用户应该能够上传文件和文件夹。然后,这些文件应自动同步到开发人员文件夹。 开发人员现在可以处理和编辑文件。 这意味着:当文件被编辑/删除/创建时,同步过程应实现此更改并从sftp镜像到开发人员,反之亦然。

我已经rsync inotifywaitrsync一起尝试,但在一个方向上工作正常,但不是两种方式。然后我偶然发现了一致,在那里我看到可以同步两种方式。现在我发现,只要你使用/home/folder1就可以设置新的用户/组权限,这会使sftp用户过时。有人可以向我展示协调的示例代码,它会将文件更改/创建/删除的两种方式从/home/folder2同步到#!/bin/bash EVENTS="CREATE,CLOSE_WRITE,DELETE,MODIFY,MOVED_FROM,MOVED_TO" DIR1="/home/dev/project/" USR1="dev" DIR2="/home/sftp/uploads/" USR2="sftp" while inotifywait -e "$EVENTS" -r "$DIR1"; do sudo rsync -avu --delete --chown="$USR2":"$USR2" "$DIR1" "$DIR2" done & while inotifywait -e "$EVENTS" -r "$DIR2"; do sudo rsync -avu --delete --chown="$USR1":"$USR1" "$DIR2" "$DIR1" done & wait

更新 我编写了一个inotifywait bash脚本,它几乎可以按照我想要的方式工作:

mousePressEvent

有一个很大的缺陷:在某些情况下,rsync命令会同时运行,这会破坏文件。

所以我更新了问题:

如何使第一个循环命令仅在第二个循环命令完成时运行,反之亦然?

1 个答案:

答案 0 :(得分:0)

我不确定你的意思是什么,"你可以通过unison设置新的用户/组权限。" Unison无法更改setuidsetgid位,但Unison 更改文件所有者和文件组。有关详细信息,请参阅Unison manual中的ownergroup选项。

通常,您希望让开发人员调用Unison(因为我假设您希望开发人员拥有并控制传输的文件)。然后你应该使用repeat=watch选项调用Unison,以便Unison的实例将观察sftp文件的任何更改并立即传输它们。