如何运行远程 crontab?

如何运行远程 crontab?

我们希望通过一台服务器运行某个备份过程,基本上如下所示:

服务器 1 运行一个进程,将数据从服务器 2 复制到备份位置。

有没有我可以编写的脚本来执行此操作,无论是 scp、rsync 还是其他什么?

我们还希望覆盖目标位置的内容,并在每次 crontab 运行时用更新的数据替换它。

答案1

这不需要脚本来激活。ssh可以做你想要的。

 ssh user@server2 "/script/backup.sh"

将在“server2”上为“用户”运行 /script/backup.sh

该脚本可以保存您需要备份的所有命令,包括使用 rsync 将结果复制到另一个系统(或第一个系统)。

答案2

建立无密码服务器连接

  • 在本地机器上生成 ssh 证书:ssh-keygen
  • 并在目标/远程机器上注册该机器:ssh-copy-id username@destination

备份命令:

如果您更喜欢覆盖内容,那么“覆盖”部分也必须弄清楚;但简而言之,不需要存档轮换软件,您可以使用普通的tarscp移动文件,就像这种半单行程序。

(为了将其放在一行中,请;像这样添加:cd bak-this-dir;。crontabs 中需要单行代码。)

cd backup-this-directory
tar czvf - | ssh username@destination "cd backup-destination; dd | tar xzf -"

或者反过来——如果你想要将文件上传到本地机器:

cd backup-destination
ssh username@destination "cd backup-this-directory; tar czf -" | dd | tar xzvf -

变体:

  • 你可以让文件保持压缩状态,在这种情况下,dd你的接收端可能会dd of=`date '+%F'`-backup.tgz
  • z如果源难以压缩(如视频)或者带宽不是限制,则不需要tar 选项。

评论:

  • %字符必须在 chron tab 中进行转义,
  • dd为你的变速箱添加速度计,
  • 记住将其cd放入适当的目录中,否则tar可能会因主目录中散落着来自备份源的许多小文件而造成“tar 炸弹”。

相关内容