【问题标题】:Capture Output of dscl Command for Backup Script为备份脚本捕获 dscl 命令的输出
【发布时间】:2015-08-05 06:15:47
【问题描述】:

我目前正在管理一批正在回收的 Mac,因此我们需要找到一种方法,将系统上的用户文件夹(不包括任何多余的帐户,如 Shared 或 root)自动备份到网络共享,使用rsync

我想使用以下命令捕获每个用户的结果输出:

$ dscl /Local/Default -list /Users UniqueID | awk '$2 >= 500 { print $1; }'

示例输出:

John
Bob

如果这不是最优雅的解决方案或解决此问题的方法,我深表歉意(边学习 bash)。但是,为 John 和 Bob (或一些 n 个结果)解析逐行结果的最佳方法是什么,将结果分配给他们一个变量到 \Users\$RESULT 并将这些内容复制到 \Volumes\Backup\$RESULT+DATESTAMP

最终,目标是从拉取上一个dscl 命令的结果中创建\Users\John\Users\Bob\Volumes\Backup\John-5/5/15\Volumes\Backup\Bob-5/5/15 的备份。

感谢任何帮助!

【问题讨论】:

  • 你为什么不直接复制 /Users 中的目录而不是摆弄 dscl?
  • 我们有各种各样的计算机,有许多不同的帐户,并且在 1 到 10 多个用户之间可能存在很大差异。我曾想过单独做这件事,因为这会简化事情,但会消耗太多时间。这就是为什么我们想找到一种方法来自动化每个用户的所有备份,只需一次点击解决方案(设置它并忘记它的心态)。

标签: macos bash shell scripting backup


【解决方案1】:

如果我理解正确的话,下面的内容应该可以解决问题。

for name in $(dscl /Local/Default -list /Users UniqueID | awk '$2 >= 500 { print $1; }')
do
    cp -r /Users/$name /Volumes/Backup/$name-$(date +%d.%m.%y)
done

我假设您偶然使用 \ 来拆分目录,不是吗?此外,出于显而易见的原因,我从 / 切换到 .日期格式。

【讨论】:

    猜你喜欢
    • 2014-10-30
    • 2017-02-26
    • 2013-01-16
    • 1970-01-01
    • 2011-11-05
    • 2018-05-04
    • 2021-01-25
    • 1970-01-01
    • 2012-11-22
    相关资源
    最近更新 更多