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

目录

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

相关推荐
wdxylb3 小时前
云原生俱乐部-shell知识点归纳(1)
linux·云原生
飞雪20074 小时前
Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
linux·macos·阿里云·vmware·虚拟机·aliyun·alibaba cloud
路溪非溪4 小时前
关于Linux内核中头文件问题相关总结
linux
海绵不是宝宝8175 小时前
连接远程服务器上的 jupyter notebook,解放本地电脑
服务器·jupyter·github
Lovyk7 小时前
Linux 正则表达式
linux·运维
Fireworkitte8 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
黑客飓风8 小时前
当GitHub宕机时,我们如何协作?
github·notepad++
sword devil9008 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char8 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
繁星¹⁸⁹⁵9 小时前
通过update-alternatives可以实现cuda的多版本切换
服务器