我刚刚设置了.com
之前在同一台服务器上运行的域.co.uk
,我复制了所有文件,使用 bash 运行了它们以更改引用域的任何位置,DB 也是如此,一切顺利,重定向也是如此。但现在我想使用 bash 移动 cron 作业。
我刚在想
sudo cat /var/spool/cron/sbadmin | while read -r line; do echo $line;done > /var/spool/cron/sbcomadmin
但新文件权限被拒绝。当我处于 sudo 模式时,权限如何被拒绝?
域也需要在新的 cron 文件中进行更改,但我认为我可以在复制期间或之后使用 sed。
答案1
首先,你使用的循环是无用的。你的命令可以写成:
$ sudo cat /var/spool/cron/sbadmin > /var/spool/cron/sbcomadmin
这不起作用。您需要使用以下命令以 root 身份创建文件:
$ cat /var/spool/cron/sbadmin | sudo tee /var/spool/cron/sbcomadmin
会将tee
输出写入 stdout 和提供的文件。如果不想写入 stdout,可以> /dev/null
在上一个命令的末尾附加。此外,tee -a
如果需要,您可以使用 以附加模式工作来替换>>
。
答案2
假设用户 ID 和组信息相同.....您是否考虑过使用 cpio 或 tar...创建存档....将其发送到其他系统.....恢复它....进行细微编辑....完成。像这样的 shell 循环不是一种非常有效的方法,尤其是在有大量文件的情况下。