使用 SSH 传输文件有几种常见的方法,包括使用 scp
和 rsync
命令。下面是这两种方法的基本用法:
使用 scp
命令
scp
(secure copy)是基于 SSH 的文件传输工具,它可以安全地在本地计算机和远程计算机之间传输文件或目录。
1. 从本地传输文件到远程主机
scp /path/to/local/file username@remote_host:/path/to/remote/directory/
/path/to/local/file
:本地文件的路径username@remote_host
:远程主机的用户名和主机名或 IP 地址/path/to/remote/directory/
:远程主机上目标目录的路径
2. 从远程主机传输文件到本地
scp username@remote_host:/path/to/remote/file /path/to/local/directory/
/path/to/remote/file
:远程主机上文件的路径/path/to/local/directory/
:本地目标目录的路径
3. 传输目录
使用 -r
选项可以递归传输目录及其内容。
-
从本地传输目录到远程主机
scp -r /path/to/local/directory username@remote_host:/path/to/remote/directory/
-
从远程主机传输目录到本地
scp -r username@remote_host:/path/to/remote/directory /path/to/local/directory/
使用 rsync
命令
rsync
是另一个基于 SSH 的文件传输工具,支持增量同步和文件的高效传输。
1. 从本地传输文件到远程主机
rsync -avz /path/to/local/file username@remote_host:/path/to/remote/directory/
-a
:归档模式,保留文件属性-v
:显示详细输出-z
:压缩文件数据以加快传输速度
2. 从远程主机传输文件到本地
rsync -avz username@remote_host:/path/to/remote/file /path/to/local/directory/
3. 传输目录
-
从本地传输目录到远程主机
rsync -avz /path/to/local/directory/ username@remote_host:/path/to/remote/directory/
-
从远程主机传输目录到本地
rsync -avz username@remote_host:/path/to/remote/directory/ /path/to/local/directory/
认证和配置
-
SSH 密钥认证:如果你经常使用 SSH 进行连接,建议配置 SSH 密钥认证,以避免每次都输入密码。可以使用
ssh-keygen
和ssh-copy-id
工具来设置 SSH 密钥。 -
SSH 配置文件:你可以在
~/.ssh/config
文件中配置常用的 SSH 主机和选项,以简化命令。例如:Host myserver HostName remote_host User username Port 22
然后可以使用简化的命令:
scp /path/to/local/file myserver:/path/to/remote/directory/
总结
- 使用
scp
和rsync
可以轻松地在本地和远程主机之间传输文件。 rsync
提供了更多的选项和更高效的文件同步功能。- 配置 SSH 密钥和 SSH 配置文件可以提高工作效率。