如何使用 GNU stow 在原始目录和符号目录之间同步文件和符号链接?

如何使用 GNU stow 在原始目录和符号目录之间同步文件和符号链接?

例如,我将符号链接放入~/.local/bin/其中,指向~/Dotfiles.d/local/.local/bin/.

我使用以下说明来执行此操作:

$ cd ~/Dotfiles.d/
$ stow -v local

因此stow将为本地(包含 .local/bin/*)中的所有文件创建链接~/.local/bin/*

但是当我需要将新文件添加到 bin 目录中时,无论我添加文件~/.local/bin/还是~/Dotfiles.d/local/.local/bin/stow都无法在这两个目录之间同步文件。

我想要的是:

  1. 如果直接添加新文件~/.local/bin/,实际上会自动添加新文件~/Dotfiles.d/local/.local/bin,并自动创建符号链接~/.local/bin/
  2. 如果我添加新文件到~/Dotfiles.d/local/.local/bin/,它会自动创建该文件的符号链接到~/.local/bin/

stow做到吗?

答案1

GNU Stow 没有实现双向或连续同步,也从未打算这样做。它的主要工作是管理目标目录中的符号链接,这些符号链接指向 Stow 目录下的 Stow 包树中的文件和目录。 (看手册的术语部分了解这些术语的精确定义。)

所以你的两个请求的答案是:

  1. 不,这在设计上是不可能的,因为 Stow 无法知道您是否希望将新文件放置在localStow 目录 ( ) 下的包中或其他包中~/Dotfiles.d。话虽如此,如果新文件也被添加到包树下的相应路径中local,那么该--adopt选项可以将其从普通文件变成~/.local/bin/符号链接。
  2. 如果您所说的“自动”是指无需用户干预,那么就不会,因为与 Dropbox 守护程序等服务不同,Stow 不会连续运行。但是,如果您stow local第二次运行,那么它会创建您想要的符号链接。

相关内容