📅  最后修改于: 2023-12-03 15:19:51.656000             🧑  作者: Mango
在Unix系统中,rsync是一个常用的工具,它可以在两个系统之间同步文件和目录。rsync命令的优点是使用相对较少的带宽,提供了可选的压缩和重发,以便在较慢的连接上更好地工作。最近rsync还支持在ssh之上的安全传输。
要使用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使用密码文件中的密码,而不是每次输入。
为了更安全地连接到远程系统并使用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 -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,请尝试使用上述用法,可能会提高您的工作效率。