我需要在linux间传输一个20G的大文件,两台服务器是在同一个局域网上,可以ping通的前提下。我最后使用的方法是sftp的方法传输的,介绍一下我找到的方法。
1. 使用 scp
命令
scp
是 Secure Copy 的缩写,它允许你在本地和远程主机之间安全地复制文件。
示例:
-
从本地复制文件到远程服务器:
scp /path/to/local/file username@remotehost:/path/to/remote/directory/
-
从远程服务器复制文件到本地:
scp username@remotehost:/path/to/remote/file /path/to/local/directory/
-
复制整个目录:
使用
-r
选项可以递归复制整个目录。scp -r /path/to/local/directory username@remotehost:/path/to/remote/directory/
2. 使用 rsync
工具
rsync
是一个更高级的文件传输工具,支持增量传输、压缩、链接保持等功能,并且比 scp
更高效。
示例:
-
同步本地文件夹到远程服务器:
rsync -avz /path/to/local/directory/ username@remotehost:/path/to/remote/directory/
-
同步远程文件夹到本地:
rsync -avz username@remotehost:/path/to/remote/directory/ /path/to/local/directory/
-
保持符号链接、权限等属性:
rsync
默认会保留文件的权限、时间戳等信息,可以通过添加参数来进一步控制这些行为。
3. 使用 FTP/SFTP
FTP
(File Transfer Protocol)是文件传输服务,SFTP
(SSH File Transfer Protocol)是安全文件传输服务。这两个都是十分经典且常见的文件传输协议。
使用 sftp
命令行工具:
sftp username@remotehost
sftp> put /path/to/local/file /path/to/remote/directory/
sftp> get /path/to/remote/file /path/to/local/directory/
4. 使用 ssh
和重定向
可以通过 ssh
并结合输入输出重定向来实现文件传输服务。
示例:
-
将本地文件内容发送到远程服务器上的文件:
cat /path/to/local/file | ssh username@remotehost "cat > /path/to/remote/file"
-
从远程服务器获取文件内容并保存到本地:
ssh username@remotehost "cat /path/to/remote/file" > /path/to/local/file
总结
scp
和 rsync
是最常用且易于使用的工具,适合大多数场景;而FTP/SFTP
则更适合交互式操作。我只尝试了前三种方法,第四种方法未尝试。