两台服务器间进行文件传输

服务器 0

目录

方法1:使用SCP

方法2:使用rsync

使用SSH密钥


两台服务器之间进行文件传输通常可以使用SCP(Secure Copy Protocol)或rsync命令。这两种方法都是在UNIX和Linux系统上常用的工具,用于安全地复制文件和目录。以下是使用这两种方法的示例:

方法1:使用SCP

SCP是一种在两台服务器之间安全地复制文件的方法。你可以使用scp命令来实现这一目标。以下是一个示例:

# 从本地服务器复制文件到远程服务器

scp /path/to/local/file.txt username@remote_server:/path/to/remote/directory/

这里的参数解释如下

  1. /path/to/local/file.txt 是本地服务器上的文件路径。
  2. username 是远程服务器上的用户名。
  3. remote_server 是远程服务器的地址。
  4. /path/to/remote/directory/ 是远程服务器上存储文件的目录。

实例:

# 从本地服务器复制文件到远程服务器

scp /home/user/documents/file.txt user@192.168.1.100:/var/www/html/

这将把file.txt从本地服务器复制到远程服务器的/var/www/html/目录下。

方法2:使用rsync

rsync是另一个用于文件同步和复制的强大工具,它可以增量地复制文件,只复制已更改的部分,从而提高效率。以下是一个示例:

# 使用rsync从本地服务器复制文件到远程服务器

rsync -avz /path/to/local/file.txt username@remote_server:/path/to/remote/directory/

这里的参数解释如下:

-avz 表示以归档模式进行复制,保留文件属性和递归目录,使用压缩传输数据。

/path/to/local/file.txt 是本地服务器上的文件路径。

username 是远程服务器上的用户名。

remote_server 是远程服务器的地址。

/path/to/remote/directory/ 是远程服务器上存储文件的目录。

实例:

# 使用rsync从本地服务器复制文件到远程服务器

rsync -avz /home/user/documents/file.txt user@192.168.1.100:/var/www/html/

这将把file.txt从本地服务器复制到远程服务器的/var/www/html/目录下,同时保留文件属性。

选择使用SCP还是rsync取决于你的需求和偏好。通常来说,如果你需要简单的文件传输,SCP足够了。如果需要更复杂的文件同步和备份,rsync是一个更强大的工具。

使用SSH密钥

上述方法每传输完一个文件都要重新输入账户密码,这对一个或几个文件时适用,但如果有数量较多文件需要传输时,需要生成SSH密钥对进行文件传输。

  1. 生成SSH密钥对:

    在本地计算机上打开终端,并执行以下命令来生成SSH密钥对(如果密钥对已存在,请跳到下一步):

    ssh-keygen -t rsa

    这将生成一个公钥文件(通常为~/.ssh/id_rsa.pub)和一个私钥文件(通常为~/.ssh/id_rsa)。不要共享私钥文件。

  2. 将公钥复制到远程服务器:

    使用scp或其他文件传输方法将公钥复制到要传输文件的远程服务器。以下是使用scp的示例:

    scp ~/.ssh/id_rsa.pub user@remote_server_ip:~/.ssh/

    请替换user为远程服务器上的用户名,remote_server_ip为远程服务器的IP地址或主机名。

  3. 将公钥添加到远程服务器的授权文件:

    登录到远程服务器,并将公钥添加到~/.ssh/authorized_keys 文件中,如果该文件不存在,请创建它:

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

    如果有多个公钥,每个公钥应该在一个新行上。

  4. 设置正确的权限:

    确保远程服务器上的.ssh文件夹和authorized_keys文件具有正确的权限,以确保SSH能够正常工作。可以使用以下命令来设置权限:

    chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
  5. 测试SSH密钥认证:

    在本地计算机上执行以下命令,以确保您可以通过SSH密钥认证登录到远程服务器,而不需要输入密码:

    ssh user@remote_server_ip

    如果一切设置正确,您应该能够无需密码登录到远程服务器。

  6. 使用scprsync进行文件传输:

    现在,您可以使用scprsync在两台服务器之间传输文件,而不需要输入密码:

    scp file.txt user@remote_server_ip:/path/to/destination/

    或者

    rsync -avz -e "ssh" /path/to/source/ user@remote_server_ip:/path/to/destination/

    这些命令将使用SSH密钥认证进行安全的文件传输。

确保您的SSH密钥对受到良好的保护,并且不要共享私钥文件,以确保安全性。

也许您对下面的内容还感兴趣: