我在两台机器server上有巨大的模拟目录cluster,我想在它们上保持同步。基本情况是文件很少更改,但是当模拟完成时,许多大文件会立即更改,我希望在它们关闭后立即同步。
因此,我认为使用 rsync 的 cronjob 并不理想,cronjob 因为它以固定的时间间隔调用 rsync,我可能会选择太大或太小,rsync 因为它不应该检查文件的修改,因为我和模拟工作是唯一访问它们的人。
所以我的想法是使用 inotify(请参阅此问题)来检测循环中模拟目录中的更改,然后将更改的文件分叉到 rsync 中。但是,我不确定这是否会在 fork 完成时意外跳过关闭的文件。(并且可能由于 inotify 调用 rsync 再次同步刚刚同步的文件,我也可能会陷入无限循环......)所以在我尝试太多之前,我重复我的问题:
是否有一种工具可以连接到两个目录并在发生变化时立即同步它们?
(基本上这就像一个离线保管箱,我猜)
当我的笔记本电脑在我的家庭网络上时,我会在我的笔记本电脑上安装我所有的主目录和其他任何东西。我想知道是否有办法在我的笔记本电脑断开网络时保留 nfs 挂载的本地副本。
一个好处是能够合并更改的文件夹和文件等。
如何为两个本地目录设置即时文件同步?问题是我需要实时(15、10 甚至 5 秒太慢),而且我不希望创建目标根目录。
例如,类似于...
cp -fr sourcea/* /some/destdir
cp -fr sourceb/* /some/destdir
cp -fr sourcec/* /some/destdir
Run Code Online (Sandbox Code Playgroud)
捕获删除也很好,尽管它不是一个交易破坏者。
我不希望在 destdir 中创建“sourcex”。(因此 *)。我试过使用 rsync,它显然不接近甚至接近实时,以及几个通用同步系统。但是,大多数人需要 1 对 1 同步,而不仅仅是内容。
有什么建议?我已经为此奋斗了一段时间,所以任何帮助将不胜感激!
我了解到通过该-i选项,我可以让 rsync 列出它所做的所有更改。我一直将它与-nor--dry-run选项一起使用,以便我始终可以在实际执行之前了解所有预期的更改。
我一直在使用 rsync 主要是在我的两台计算机上同步我的主目录,这两台计算机都连接到网络。很多时候我只需要移动少量相对较小的文件。如果是这种情况,rsync 会花费更多的时间来检查要从传输中排除的所有文件,而不是实际传输实际更改的文件。
现在,如果我按照此程序进行操作,首先进行试运行并列出所有更改,然后实际进行,则计算要从传输中排除的文件的最长部分将完成两次。
我想把它剪成一个。有没有办法将试运行创建的更改的逐项列表提供回 rsync 以便实时运行更快或执行某些操作?
有没有办法访问syncLinux 中的特定设备?
这将用于确保例如对 USB 拇指驱动器的写入已经发生,而无需等待来自视频处理作业的排队写入在不相关的 RAID 阵列上完成。
如果有一个系统调用/参数组合可以实现这一点,我可能会编写一个简单的 C 包装器。如果有人知道可以做到这一点的 Ubuntu 软件包,那就更好了。
我正在尝试将主机 OSX 中的文件夹同步到运行 Ubuntu 的 VM。(laravel/宅基地)。这是我在主机上运行的命令:
$ unison ssh://vagrant@192.168.10.10//home/vagrant/www ~/unison/www -repeat watch
产生以下输出
Contacting server...
Connected [...]
Looking for changes
Waiting for changes from server
Fatal error: Server: Unexpected response 'Usage: unison-fsmonitor [options] root [path] [path]...' from the filesystem watcher (expected VERSION)
Run Code Online (Sandbox Code Playgroud)
在我的本地主机上:
$ unison -version
unison version 2.48.3
$ unison-fsmonitor
VERSION 1
Run Code Online (Sandbox Code Playgroud)
在我的虚拟机上:
$ unison -version
unison version 2.48.3
$ unison-fsmonitor
Usage: unison-fsmonitor [options] root [path] [path]...
This program monitors file system changes on all given (relative to root) …Run Code Online (Sandbox Code Playgroud) 我已经通过以下方式使用davfs2挂载了一个webdav目录:
sudo mount -t davfs -o uid=bruni,gid=users https://server/folder /home/bruni/mountpoint/
Run Code Online (Sandbox Code Playgroud)
如何在不卸载目录的情况下通过命令行强制同步?
客户端运行KUbuntu 19.10,服务器是egroupware服务器,但这很可能无关紧要。
mount.davfs -V
davfs2 1.5.5 <http://savannah.nongnu.org/projects/davfs2>
Run Code Online (Sandbox Code Playgroud)
为了澄清我所说的同步是什么意思,我的意思是umount.davfs在卸载之前执行的操作以验证所有更改是否已上传到服务器:
/sbin/umount.davfs: waiting while mount.davfs (pid xxxxx) synchronizes the cache .. OK
Run Code Online (Sandbox Code Playgroud) 我想在我的 Mac High Sierra 机器和 CentOs 7 机器之间同步一个目录,不包括某个文件。我已经尝试过以下
(venv) localhost:dental davea$ rsync -e 'ssh -p 7822' --exclude='dental/wsgi.py' ~/Documents/workspace/dental/ laredotornado@remotedomen.com:/home/laredotornado
skipping directory /Users/davea/Documents/workspace/dental/.
Run Code Online (Sandbox Code Playgroud)
我不太明白为什么它总是跳过我想要同步的文件。我已经验证了本地和远程 driectories 都存在,但不知道还有什么地方可以检查为什么事情会失败。
我有两台机器,一台运行 Ubuntu 18.04,另一台运行 Ubuntu 20.04。我想使用 Unison 在它们之间同步文件,但存在一些问题。首先,因为我也与另一台机器同步,所以我从源 Unison 2.48.3 编译。然后在 Ubuntu 18.04 中,我从 Ubuntu 软件 Unison 2.48.4 安装了 Ubuntu 20.04。正确设置它们后,我从 Ubuntu 18.04 的命令行运行
unison-2.48.4-gtk
并尝试同步。尽管一切正常,即它找到了机器和目录,然后我收到消息:
Fatal error during unmarshaling (input value:ill-formed message) possibly because client and serer have been compiled with different versions of OCaml compiler。在 20.04 中,我检查了 OCaml 的版本,但显然它没有返回任何内容(即使我已经从应用程序商店安装了 unison)。18.04 的版本是 4.05.0。关于我能做什么有什么想法吗?
我需要基本上合并两棵树上的更改,将更改从分支 2 应用到分支 1。我有这样的树:
media
??? cd
? ??? 0
? ? ??? file1
? ? ??? file2
? ? ??? file3
? ??? 1
? ? ??? file1
? ? ??? file2
? ? ??? file3
? ??? 2
? ??? file1
? ??? file2
? ??? file3
??? dvd
? ??? 0
? ? ??? file1
? ? ??? file2
? ? ??? file3
? ??? 1
? ? ??? file1
? ? ??? file2
? ? ??? …Run Code Online (Sandbox Code Playgroud)