Skip to content

node-scpSao chép tệp qua SSH, tới mọi máy chủ

Dùng SFTP khi máy chủ có, dùng giao thức SCP thật khi máy chủ không có. Một API nhỏ gọn cho cloud VM, router OpenWrt và thiết bị mạng.

SFTPSCP

Sao chép một thư mục chỉ với ba dòng ​

ts
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 });
ts
import { upload } from 'node-scp';

await upload('./dist', 'deploy@example.com:/var/www/app', { recursive: true, privateKey });
sh
npx node-scp -r ./dist deploy@example.com:/var/www/app
yaml
- uses: maitrungduc1410/node-scp-async@v1
  with:
    host: ${{ secrets.DEPLOY_HOST }}
    username: deploy
    private-key: ${{ secrets.DEPLOY_KEY }}
    source: dist/
    target: /var/www/app

Chạy được với những máy chủ bạn đang dùng ​

Chọn một loại máy chủ để xem node-scp xử lý thế nào.

protocol: 'auto' sẽ dùngSFTP
client.fscó sẵn
Sao chép thư mụcnhiều tệp song song

Trường hợp phổ biến nhất, không cần cấu hình gì.

ts
await connect({ host: 'example.com', username: 'deploy', privateKey });

Cách chọn giao thức ​

Nhanh ở những chỗ quan trọng ​

Thời gian tải lên một máy chủ OpenSSH chạy trên cùng máy, lấy trung bình nhiều lần chạy. Phần lớn chênh lệch với tệp nhỏ đến từ TCP_NODELAY; trang so sánh giải thích chi tiết.

200 tệp 4 KiB trong 10 thư mục (càng thấp càng tốt)
node-scp (SFTP)
52 ms
node-scp (SCP)
67 ms
node-ssh
484 ms
ssh2-sftp-client
534 ms
Một tệp 16 MiB (càng thấp càng tốt)
node-scp (SCP)
53 ms
node-scp (SFTP)
57 ms
ssh2-sftp-client
94 ms
node-ssh
104 ms

Phát hành theo giấy phép MIT.