迟早都要把文件传到服务器上:网站的构建产物、数据库导出文件、在本地写好的配置。为此你并不需要 FTP 服务器:SSH 已经提供了三个好用的工具。所有示例都使用文档专用地址,请换成你自己服务器的地址。
弄清你的连接信息
- 独立 IP 套餐:
root@203.0.113.10,端口 22。 - NAT 套餐: 主机和你的专属 SSH 端口显示在面板中(例如端口 20123)。下面的所有命令都需要这个端口;参见 NAT 访问如何工作。
scp:复制文件或文件夹
上传一个文件:
scp backup.sql root@203.0.113.10:/root/
下载一个文件:
scp root@203.0.113.10:/var/log/nginx/access.log .
整个文件夹:
scp -r ./site root@203.0.113.10:/var/www/
在 NAT 套餐上,用大写的 -P 指定端口:
scp -P 20123 backup.sql root@your-nat-host:/root/
rsync:同步文件夹的正确工具
rsync 只发送差异部分,显示进度,连接中断后还能继续。两端都需要安装它(apt install -y rsync)。
rsync -avzP ./site/ root@203.0.113.10:/var/www/site/
-a保留权限和时间戳,-v列出文件,-z压缩传输,-P显示进度并支持断点续传。
使用自定义 SSH 端口时:
rsync -avzP -e "ssh -p 20123" ./site/ root@your-nat-host:/var/www/site/
要让目标与源完全一致(同时删除你在本地删掉的文件),就加上 --delete,但请先看看它会做什么:
rsync -avzP --delete --dry-run ./site/ root@203.0.113.10:/var/www/site/
注意末尾的斜杠。 ./site/ 复制的是 site 的内容;./site 则把文件夹本身复制到目标中。用上 --delete 时,这个区别决定了哪个目录会被清空。
SFTP:交互式或图形界面
命令行客户端用起来像一个小型文件管理器:
sftp -P 20123 root@your-nat-host
sftp> put backup.sql
sftp> get /etc/nginx/nginx.conf
sftp> exit
更喜欢图形界面?FileZilla、WinSCP 或 Cyberduck 用同样的信息连接:SFTP 协议、你的主机、端口 22(或你的 NAT 端口)、用户 root,以及你的 SSH 密钥或密码。
用 SSH 密钥更快
这些工具都基于 SSH,所以一把 SSH 密钥就能免去输入密码,还能让你用 cron 自动化传输。还没配置的话:SSH 密钥认证。新的 EQVPS 服务器在你切换到密钥之前接受面板中的 root 密码,我们建议你在第一天就切换。
大文件传输
面对几十 GB 的数据,rsync 是唯一明智的选择:连接一旦中断,重新运行同一条命令,它就会从断开的地方继续。请在发送端机器的 tmux 或 screen 里运行,这样合上笔记本也不会中断传输。
评论
暂无评论。来做第一个吧。