在同一台服务器上将 cron 作业从一个域复制到另一个域

在同一台服务器上将 cron 作业从一个域复制到另一个域

我刚刚设置了.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 循环不是一种非常有效的方法,尤其是在有大量文件的情况下。

相关内容