🔀
没有 SFTP 也能用
protocol: 'auto' 在服务器提供 SFTP 时使用 SFTP,否则回退到 SCP,Dropbear、路由器和交换机都能直接使用。
如何选择协议
服务器有 SFTP 就用 SFTP,没有就用真正的 SCP 协议。一套小巧的 API,覆盖云主机、OpenWrt 路由器和网络设备。
import { connect } from 'node-scp';
await using client = await connect({ host: 'example.com', username: 'deploy', privateKey });
await client.upload('./dist', '/var/www/app', { recursive: true });import { upload } from 'node-scp';
await upload('./dist', 'deploy@example.com:/var/www/app', { recursive: true, privateKey });npx node-scp -r ./dist deploy@example.com:/var/www/app- uses: maitrungduc1410/node-scp-async@v1
with:
host: ${{ secrets.DEPLOY_HOST }}
username: deploy
private-key: ${{ secrets.DEPLOY_KEY }}
source: dist/
target: /var/www/app选择一种服务器,看看 node-scp 会如何处理。
protocol: 'auto' 会使用SFTPclient.fs可用最常见的情况,无需任何配置。
await connect({ host: 'example.com', username: 'deploy', privateKey });上传到同一台机器上的 OpenSSH,取多次运行的平均值。小文件场景下的差距主要来自 TCP_NODELAY,对比页面有详细解释。