Linux文件传输命令:SCP

SCP全程Secure Copy,直译为“安全复制”,是Linux系统自带的基于SSH(Secure Shell)协议的文件传输命令,不用额外安装。由于使用了SSH协议,scp命令在传输过程中会加密数据,确保数据的安全性和完整性。应用场景主要涉及在本地主机和远程主机之间的安全文件传输。
1、本地文件传到远程服务器
scp /path/to/local/file.txt [user@remote_host:]/path/on/remote/
这会将远程主机remote_host的/path/on/remote/文件复制到本地的/path/to/local/file.txt目录下。
示例:把本地的backup.tar.gz传到192.168.1.100服务器的/data/backups目录,执行后输入远程服务器密码,就能看到传输进度条。
scp /home/user/backup.tar.gz root@192.168.1.100:/data/backups/
注意:
• 远程复制时有同名文件时会覆盖
• 在向远程服务器复制文件时,如果不指定远程用户名,默认会传输给当前用户名相同的用户

2、远程文件下载到本地服务器
反过来,从远程服务器拉文件到本地,比如下载192.168.1.100的日志文件:
scp root@192.168.1.100:/var/log/nginx/access.log ./
注意末尾的./表示当前目录,执行后日志文件就会被保存到本地。

3、传输整个文件夹(含子目录)
传文件夹要加-r参数(递归传输),比如把本地的website/目录传到远程:
scp -r /home/user/website/ root@192.168.1.100:/var/www/
这样website/里的所有文件和子文件夹都会一起传过去。

4、配置SSH密钥后免密传输
每次输密码太麻烦?配置SSH密钥认证,一步到位:
本地生成密钥对(一路回车默认即可):ssh-keygen -t rsa
把公钥传到远程服务器:ssh-copy-id root@192.168.1.100之后再用scp传输,就再也不用输密码了!

5、指定端口传输
服务器端口不是默认22怎么办?如果远程服务器SSH端口改了(比如2222),用-P参数指定端口(大写P!):
scp -P 2222 localfile.txt root@192.168.1.100:/tmp/

6、启用压缩传输(-C参数)
传文本文件、日志等可压缩内容时,加-C参数自动压缩后传输,实测1GB日志文件传输时间从120秒降到75秒:
scp -C large_logs.tar.gz root@192.168.1.100:/data/

7、大文件分块传输(40GB以上适用)
split -b 10G database backup_#传输所有块 scp backup_* root@192.168.1.100:/backup/#远程合并ssh root@192.168.1.100 "cat backup_* > database"
//本地分块(每块10GB)

8、scp vs rsync:到底该用哪个?
image
总结:临时传文件用scp,定期备份用rsync!

9、本地文件到服务器
本地目录,右键,gitBashHere
scp /path/to/local/file username@server:/path/to/server/directory

posted @ 2025-12-01 19:07  愿鲁且愚6746  阅读(0)  评论(0)    收藏  举报