Ubuntu 16.04 通过 ssh 进行 rsync 提示我输入密码,如何使其成为 cron 作业?

Ubuntu 16.04 通过 ssh 进行 rsync 提示我输入密码,如何使其成为 cron 作业?

Ubuntu 16.04 如何使用 cron 安装 rsync 服务器以便其他系统通过 ssh 访问

设置:系统“主要”采用 Ubuntu 16.04 以及仅用于备份的第二块硬盘。

/dev/sdb1 通过使用 blkid 获取 uuid 然后在 /etc/fstab 中添加一行安装在 /mnt 上

我创建了一个名为 /mnt/full/prime 的子目录,用于第一次备份主启动 SSD 内容。

--> 运行命令:

sudo rsync -aAXv / --delete --ignore-errors --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/full/prime

确实将根文件系统的镜像副本复制到目录 /mnt/full/prime

它非常酷 - 就像带有 /MIR 选项的 Robocopy 一样 - 它只传输更改,因此在第一次复制文件后运行速度会更快。


现在,为了设置其他人可以访问,我找到了这篇文章

如何使用 rsync 在 Linux 上备份数据

它说运行以下命令:

sudo apt-get install ssh rsync

它安装正常。——
编辑:这被证明是不必要的。——结束编辑——

我的所有系统都设置了双向无密码登录。

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub <target-system>

我对无密码 scp 复制和 ssh 没有任何问题。

因此,我在 mnt/full 下为我的下一个系统“solar”创建了一个子目录 - /mnt/full/solar,然后使用 ssh 进入 Raspbian 系统“solar”,我发出了相同的 rsync 命令,但目标目录是 pi@prime:/mnt/full/solar

mkdir /mnt/full/solar
ssh solar
sudo rsync -aAXv / --delete --ignore-errors --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} pi@prime:/mnt/full/solar

但它提示我输入 pi@prime 的密码——rsync 不遵守正常的无密码登录设置。

一旦我输入密码,复制就会正常进行。

所以现在一切看起来都很好,只是如果它要提示输入密码的话,它将无法作为日常 cron 作业运行。

问题就在标题里:Ubuntu 16.04 通过 ssh 进行 rsync 提示我输入密码,如何使其成为 cron 作业?

答案1

这应该可以做到:

sudo rsync -e 'ssh -i /path/to/pi's/id_rsa' -aAXv / --delete --ignore-errors --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/m‌​nt/*","/media/*","/l‌​ost+found"} pi@prime:/mnt/solar

相关内容