📜  rsync 远程 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:19:51.656000             🧑  作者: Mango

用Rsync在远程服务器之间同步数据

在Unix系统中,rsync是一个常用的工具,它可以在两个系统之间同步文件和目录。rsync命令的优点是使用相对较少的带宽,提供了可选的压缩和重发,以便在较慢的连接上更好地工作。最近rsync还支持在ssh之上的安全传输。

安装rsync

要使用rsync,您需要在两个系统上都安装它。在Debian、Ubuntu、CentOS和Fedora等主要Linux发行版中,都可以通过以下安装rsync:

sudo apt-get install rsync        # Ubuntu or Debian
sudo yum install rsync            # CentOS or Fedora
连接远程系统

rsync可以从本地系统同步数据到远程系统,也可以从远程系统同步数据到本地系统。本节演示如何从本地系统同步数据到远程系统。

要连接远程系统,您需要知道目标系统的IP或域名,以及具有访问权限的用户名和密码。您可以通过以下命令连接到远程系统:

rsync -avz -e ssh /local/dir username@remote_host:/remote/dir
  • -a参数表示将文件同步为归档模式, 连同各种属性,如权限和时间戳等。
  • -v参数表示rsync命令需要在标准输出上输出更多的信息,以便您可以观察到同步进程的变化。
  • -z参数表示在网络连接较慢,可以使用压缩算法来减小传输数据的大小。
  • -e ssh参数表示将通过SSH进行连接,以确保数据传输是安全的。

在上面的命令中,您需要注意以下部分:

  • /local/dir:将要同步到远程系统的本地目录。
  • username@remote_host:目标主机的用户名和IP地址。
  • :/remote/dir:同步到远程系统的目标目录。

每次运行rsync命令时都有不同的标识符,因此,远程系统的每个同步目录都有一个唯一的标识符和名称,以避免重复。

使用密码文件

为了避免在每次远程连接时输入密码,我们可以使用密码文件。密码文件是一个包含ssh密码的配置文件,它可以在远程系统上保存一个密码。首先,您需要创建一个新文件包含ssh密码:

vim ~/.password

将ssh密码输入这个文件,然后保存。现在,当您运行rsync命令时,您需要在命令中指定密码文件:

rsync -avz --password-file=~/.password /local/dir username@remote_host:/remote/dir

在上面的命令中,我们使用了--password-file选项告诉rsync使用密码文件中的密码,而不是每次输入。

使用SSH密钥对

为了更安全地连接到远程系统并使用rsync,您还可以使用SSH密钥对。首先,您需要在本地系统上生成SSH密钥对:

ssh-keygen -t rsa

该命令将提示您输入用于密钥生成的密钥名称和过程,并要求您输入密码以保护私钥。

接下来,您需要将生成的公钥添加到远程系统上的authorized_keys文件中。您可以使用以下命令显示远程服务器的公钥:

cat ~/.ssh/id_rsa.pub

然后,在远程系统上,您需要创建或打开authorized_keys文件,并将生成的公钥手动添加到文件中:

vim ~/.ssh/authorized_keys

保存文件后,您可以通过以下命令尝试连接到远程服务器:

ssh username@remote_host

如果连接成功,您将无需输入密码即可登录远程系统。

Rsync的常见用法

rsync有许多常用技巧可以让您更有效地同步文件和目录。在这里,我们列出了三个常见用途。

同步本地目录

要将一个本地目录复制到另一个本地目录,你可以使用以下命令:

rsync -avz /path/to/source /path/to/destination

该命令将 /path/to/source 目录同步到 /path/to/destination 目录中。

将远程目录同步到本地

要从远程同步目录到本地目录,您可以使用以下命令:

rsync -avz username@remote_host:/remote/dir /local/dir

请注意:在本地目录中使用的路径必须在用户名后面加上冒号(:)。

同步本地目录到远程目录

如果您想将本地目录同步到远程目录,请使用以下命令:

rsync -avz /local/dir username@remote_host:/remote/dir

同样,请注意:在远程系统中使用的路径必须在用户名后面加上冒号(:)。

结论

rsync是一个十分有用的工具,可以让我们更轻松地在本地系统和远程系统之间同步数据和目录。它支持许多选项和标志,可以让我们根据需要自定义同步任务和设置。如果您还没有使用rsync,请尝试使用上述用法,可能会提高您的工作效率。