gpt4 book ai didi

macOS - 更新脚本 - 从 rsync 2.6.9 移动到 3.0.6

转载 作者:行者123 更新时间:2023-12-04 15:58:41 27 4
gpt4 key购买 nike

我们在 macOS 上使用 rsync 将特定用户的主目录从OLD(当前)迁移到NEW计算机。

用户拥有电脑...我们拥有电脑。

两台计算机都绑定(bind)到 Active Directory,我们的脚本保留了 UID/GID、资源分支等。

Apple 捆绑了 rsync 2.6.9 我们需要使用 -E 来“复制扩展属性”,但是不幸的是,退缩是完整的,而 delta 是坏的... rsync 的每次运行都被视为完整运行。

rsync 3 修复了这个问题,能够在不中断后续运行的情况下“复制扩展属性”...但是由于从 GNU v2GNU v3 的更改, Apple and LinusT have flipped GNU v3 the bird (deservingly so) .

我们就如何在不破坏任何开发人员工作流程的情况下将 rsync 更新到 3.0.6 与 Apple 进行了交流,他们建议我们选择一个文件夹并使用特定路径调用...所以我们选择了/Library/COMPANY/Applications/rsync 作为安装路径,其中 /Library/COMPANY/Applications/rsync/bin/rsync 成为二进制文件的路径。

技术人员将通过 ssh 连接到用户的 OLD 计算机并运行 /Library/COMPANY/Scripts/rsyncStuff.sh 这将提示输入标准,简而言之将运行如下命令这个:

/usr/bin/rsync --log-file=/Library/Logs/rsyncTransfer_${dateStamp}.log --exclude '<stuff>' --archive --verbose --delete --extended-attributes --progress --recursive --human-readable -e ssh /Users/jdoe adminUser@${NEWcomputerIpAddress}:/Users/Shared/

我们研究了 rsync 2.6.9 和 3.0.6 之间的区别,我们最好的猜测是这个命令本质上会做同样的事情:

/Library/COMPANY/Applications/rsync/bin/rsync --log-file=/Library/Logs/rsyncTransfer_${dateStamp}.log --exclude '<stuff>' --archive --verbose --delete --xattrs --acls --progress --recursive --human-readable -e ssh /Users/jdoe adminName@${NEWcomputerIpAddress}:/Users/Shared/

注意 rsync 2.6.9 使用 --extended-attributes,其中 rsync 3.0.6 使用 --xattrs -- ACLS。健全性检查,这看起来正确吗?

一位同事问我们是否应该使用 --rsync-path=PROGRAM,它存在于 2.6.9 中,不确定是否需要它,因为技术正在调用我们的脚本,并且我们管理命令,包括 rsync 的路径...健全性检查,以防万一。 :)

[编辑:确认不需要 --rsync-path=PROGRAM。]

TIA,唐

最佳答案

简短总结:如果你想要扩展属性,不要在 rsync v2 和 v3 之间传输;选择一个,并在两端使用它。

更长的解释:为了支持扩展属性(和 Finder 标志,以及 HFS+ 支持的所有其他非标准元数据),Apple 修改了 macOS 附带的 rsync v2.x 以使用 AppleDouble format .除了所有真实文件之外,它还会同步带有“._”前缀的虚假元数据"file"——也就是说,如果您有一个名为“notes.txt”的文件,它会同步两个“notes.txt”和“._notes.txt”,后者包含文件的元数据。增量传输对于主文件应该可以正常工作,但元数据文件不支持;这无关紧要,因为元数据文件通常很小。

另一方面,rsync v3 以完全不同且不兼容的方式向标准添加了可扩展的元数据。我不记得我对此进行了多彻底的测试,但是如果您尝试将扩展元数据从 v3 传输到 v2,IIRC 会拒绝它,因为远程 (v2) 不支持该功能。如果您尝试从 Apple 的 v2 到 v3,您会得到一堆实际的“._”文件,因为接收方无法将它们识别为元数据。

此外,您对不同的命令行选项是正确的,但在 v3 上您可能还需要 --ctimes(保留创建时间)和 --fileflags (保留标志)。虽然最后一个带有警告:我遇到了 v3 锁定文件的问题(由于传输 uchg 文件标志)然后未能设置它们的其他属性。

就我个人而言,我更喜欢使用 v3,所以我只是将它复制到我要在它们之间传输的计算机上。我通常将其安装为/usr/local/bin/rsync3,因此使用哪个版本不会有歧义。

关于macOS - 更新脚本 - 从 rsync 2.6.9 移动到 3.0.6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51032585/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com