使用 scp
在 Linux 服务器之间传输文件
scp
(Secure Copy Protocol)是一个基于 SSH 的安全文件传输工具,用于在 Linux 服务器之间传输文件。以下是详细的使用方法和示例:
基本语法
scp [选项] 源文件 目标文件
常见的选项包括:
-
-r
:递归传输目录。 -
-P
:指定 SSH 连接的端口号。 -
-i
:指定 SSH 连接时使用的密钥文件。
1. 从本地传输文件到远程服务器
scp /path/to/local/file username@remote_host:/path/to/remote/directory
示例:
scp /home/user/documents/report.pdf user@192.168.1.100:/home/user/documents/
2. 从远程服务器传输文件到本地
scp username@remote_host:/path/to/remote/file /path/to/local/directory
示例:
scp user@192.168.1.100:/home/user/documents/report.pdf /home/user/documents/
3. 传输整个目录
使用 -r
选项递归传输目录:
scp -r /path/to/local/directory username@remote_host:/path/to/remote/directory
示例:
scp -r /home/user/documents user@192.168.1.100:/home/user/
4. 指定 SSH 端口号
如果远程服务器的 SSH 服务不是默认的 22 端口,可以使用 -P
选项指定端口号:
scp -P 2222 /path/to/local/file username@remote_host:/path/to/remote/directory
示例:
scp -P 2222 /home/user/documents/report.pdf user@192.168.1.100:/home/user/documents/
5. 使用密钥文件进行认证
如果使用 SSH 密钥认证,可以使用 -i
选项指定密钥文件:
scp -i /path/to/private/key /path/to/local/file username@remote_host:/path/to/remote/directory
示例:
scp -i /home/user/.ssh/id_rsa /home/user/documents/report.pdf user@192.168.1.100:/home/user/documents/
6. 同时传输多个文件
可以同时传输多个文件,将文件路径用空格分隔:
scp /path/to/file1 /path/to/file2 username@remote_host:/path/to/remote/directory
示例:
scp /home/user/documents/report1.pdf /home/user/documents/report2.pdf user@192.168.1.100:/home/user/documents/
7. 传输文件到远程服务器的当前目录
如果目标目录是远程服务器的当前目录,可以省略路径:
scp /path/to/local/file username@remote_host:~
示例:
scp /home/user/documents/report.pdf user@192.168.1.100:~
注意事项
-
权限问题:
-
确保你有权限访问源文件和目标目录。
-
如果传输的是目录,确保有读取和写入权限。
-
-
网络连接:
-
确保两台服务器之间的网络连接正常。
-
如果使用了防火墙,确保防火墙允许 SSH 连接。
-
-
文件名冲突:
-
如果目标目录中已经存在同名文件,
scp
会覆盖该文件。
-
-
传输进度:
-
scp
不会显示传输进度条,但可以使用rsync
或pv
工具来监控传输进度。
-
常见问题解决
-
连接被拒绝:
-
检查远程服务器的 SSH 服务是否正常运行。
-
检查防火墙设置,确保允许 SSH 连接。
-
-
权限被拒绝:
-
检查源文件和目标目录的权限。
-
确保使用的用户有权限访问这些文件和目录。
-
-
传输失败:
-
检查网络连接是否稳定。
-
确保目标磁盘空间充足。
-
通过上述方法,你可以安全地在 Linux 服务器之间传输文件。希望这些信息对你有帮助!