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

目录

方法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密钥对受到良好的保护,并且不要共享私钥文件,以确保安全性。

相关推荐
wangruofeng3 分钟前
75k Star 的 OCR 传奇——Tesseract 的 40 年,从 HP 实验室到 LSTM 神经网络
github
逛逛GitHub3 小时前
又挖到 3 个不错的 GitHub 项目,尤其是第 2 个。
github
逛逛GitHub3 小时前
GitHub 上 13 万星的爬虫神器,不要 API Key 就能用了。
github
你好潘先生9 小时前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
一点一木10 小时前
🚀 2026 年 6 月 GitHub 十大热门项目排行榜 🔥
人工智能·github
orion5720 小时前
Missing Semester Class1:course overview and introduction of shell
linux
用户120487221611 天前
Linux驱动编译与加载
linux·嵌入式
程序员老赵1 天前
服务器文件不想 SFTP 上传?Docker 跑个 File Browser,浏览器就能管理
服务器·docker·开源
OpenTiny社区1 天前
从零开发 AI 聊天页要两周?试试这款 Vue3 垂直对话组件库 TinyRobot,直接开箱即用
前端·vue.js·github
逛逛GitHub1 天前
2 万多 Star!Google 开源了这个神级 GitHub 项目。
github