Rsync 文件夹自动化

Rsync 文件夹自动化

我在远程服务器上有一个文件夹,我通过 SSH 连接到该文件夹​​。当我需要同步文件夹时,我会通过 scp 手动访问。(我正在将我的文件夹与服务器上的文件夹同步。)

我如何设置这项工作通过某些脚本自动完成,以便它自动同步文件夹并自动插入密码?

谢谢你!

答案1

无密码 SSH 通常使用公钥认证。通常,您会使用密码加密私钥,但是由于您想要运行无人值守的同步脚本,我建议您以另一个用户的身份创建密钥,并以该用户的身份运行 shell 脚本。

在客户端:

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -q -f ~/.ssh/id_rsa -t rsa
# Press enter twice when asked for a passphrase

由于 Mac 没有 SSH Copy Id,因此您需要手动完成其工作:

scp ~/.ssh/id_rsa.pub [email protected]:~

在服务器上

mkdir ~/.ssh
chmod 700 ~/.ssh
# Append or copy public key to authorized keys file:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub

Ashell 脚本是具有可执行权限集的文本文件,其开头为

#!/bin/sh
# you can then do any commands that you do manually, ex:
# (See levy's answer for the rsync command to use)
rsync /home/Anders/ 192.168.3.5:~/backup/location

要定期执行脚本,您可以使用计划任务。假设我们将该脚本保存在 /home/Anders/bin/sync.sh 中。然后运行:

env EDITOR=nano crontab -e

以您想要运行 cron 脚本的用户身份。

在出现的文本编辑器中输入:

#Minute Hour  Day Month Year  Command  
0        13   *   *     *     /home/Anders/bin/sync.sh

以上将在每天的第 14 个小时的第 0 分钟同步(从零开始计数),根据您的需要进行调整。

另一种选择可能是SSH文件系统也就是说,您可以将其挂载并可以像普通目录一样对其进行操作。

答案2

为了能够在没有密码的情况下进行 rsync,您需要创建 ssh 私钥和公钥。并将您的公钥粘贴到远程服务器的 ~/.ssh/authorized_keys 文件中。http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host # you could also just login and create the authorized_keys file and paste your public key. 
ssh remote-host

为了rsync -avz --delete -e ssh ~/dir/ user@server:/home/dir

我使用 --delete 来确保所有内容始终相同,但如果您不想这样做,请删除。此时将 rsync 命令放入 bash 脚本中,并将其放入 cron 中或在您想要时运行。

相关内容