【问题标题】:How do I sync two folders using bash so a change in one folder gets reflected in a different folder? [closed]如何使用 bash 同步两个文件夹,以便一个文件夹中的更改反映在另一个文件夹中? [关闭]
【发布时间】:2014-11-02 21:07:22
【问题描述】:

例如,我有 FolderA 和 FolderB。我希望 FolderA 中的任何新更改都反映在 FolderB 中,无论是文件名的更改还是添加或删除文件。

【问题讨论】:

    标签: bash shell terminal


    【解决方案1】:

    如果您希望 FolderB 立即反映对 FolderA 的任何和所有更改,那么解决方案是让 FolderB 成为到 FolderA 的软链接。

    ln -s FolderA FolderB
    

    如果您希望使用 FolderA 中文件的单独副本定期更新 FolderB,请使用 rsync。定期运行以下命令:

    rsync --archive --delete FolderA FolderB
    

    使用软链接的示例

    让我们创建一个目录 FolderA 并在其中放置一些文件:

    $ ls
    $ mkdir FolderA
    $ touch FolderA/{1..3}.txt
    

    现在,让我们创建 FolderB 看看里面有什么:

    $ ln -s FolderA FolderB
    $ ls FolderB
    1.txt  2.txt  3.txt
    

    FolderB 中的文件与我们在 FolderA 中看到的文件相同:

    $ ls FolderA
    1.txt  2.txt  3.txt
    

    注意ln 命令应该用于创建 FolderB。如果在运行命令时 FolderB 已经存在,结果可能不是你想要的。

    【讨论】:

    • 我对此唯一的疑虑是此方法将 FolderA 的副本放在 FolderB 中,然后保持同步。换句话说,现在我在 FolderB 中有一个 FolderA 的副本,但我希望 FolderB 的内部看起来像 FolderA 的内部。有没有办法完成那个组件?如果没有,我可以尝试完成这项工作
    • "我希望 FolderB 的内部看起来像 FolderA 的内部" 这就是应该发生的事情。请参阅添加到答案中的示例。当您运行 ln -s FolderA FolderB 时,重要的是 FolderB 不存在。如果确实存在,请先重命名或删除它,然后重试。如果它的行为与我的答案中的示例不同,那么我将需要有关您在做什么的更多详细信息。
    • 知道了!这澄清了事情。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 2012-11-12
    • 2010-11-17
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    相关资源
    最近更新 更多