【问题标题】:Rsync create symbolic links onlyrsync 只创建符号链接
【发布时间】:2012-08-06 22:26:54
【问题描述】:

我目前的 rsync 运行良好。它将我的所有文件从一个目录复制到另一个目录。唯一的事情是物理复制文件。

我有很多大文件,我不想复制所有文件。我只想在新目录中创建一个符号链接,以便我可以在网页上提供数据。源目录有一些我不希望公众看到的脚本和文件。我正在将安全数据移动到 Web 根目录(目标)。

我希望 rsync 做的是源目录中的任何新文件都会创建到目标的链接。这样我就不会像现在这样用尽我的硬盘空间。除了对它进行符号链接方面外,我所拥有的一切都很完美。有没有办法让 rsync 跟踪并创建符号链接?

rsync -aP --exclude="file.sql" --exclude="*~" --exclude=".*" --exclude="*.sh" . ${destination}

【问题讨论】:

  • 为什么不为不想显示的文件设置适当的权限?

标签: shell unix rsync


【解决方案1】:

这不是符号链接,但您可以使用--link-dest=DIR。它创建一个硬链接,该链接将为同一文件创建一个新名称。这将类似于软链接,只要:

  • 两个文件都在同一个文件系统上
  • 您不打算删除原始文件而不是副本(符号链接会中断,但硬链接不会)
  • 您没有任何明确检查它是否是软链接的内容

【讨论】:

    【解决方案2】:

    lndir 对你有用吗?根据手册,它会创建一个指向另一个目录树的符号链接的影子目录。

    【讨论】:

    • 这个问题是当你删除文件时(我会一直这样做)它们会丢失在空间中......
    【解决方案3】:

    我认为master_delivery 可能是最好的工具。使用已经引入的--link-dest 选项rsync,将复制不相同的文件。如果不介意副本和硬链接混合的情况,可以使用rsync,但如果要彻底消除重复,请使用master_delivery

    用法是:

    gem install master_delivery
    master_delivery -m <path_to_master> -d <path_to_delivery_root>
    

    【讨论】:

      【解决方案4】:

      您可以使用cp -aR -s(Linux 或 FreeBSD)或cp --archive --recursive --symbolic-link(Linux)在目标目录中创建指向源文件的符号链接,而不是副本。请注意,-s 是非标准的。

      【讨论】:

        猜你喜欢
        • 2017-06-10
        • 1970-01-01
        • 2012-11-14
        • 2016-10-14
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 2019-03-31
        相关资源
        最近更新 更多