在Linux系统中,网络文件传输是常见操作,以下是几个最常用的网络拷贝命令及其典型用法:
特点:基于SSH加密传输,安全性高
安装:通常内置(OpenSSH套件)
常用操作:
# 本地 → 远程
scp /local/file.txt user@remote:/remote/dir/
# 远程 → 本地
scp user@remote:/remote/file.txt /local/dir/
# 递归拷贝目录
scp -r /local/dir user@remote:/remote/dir/
# 指定端口(如2222)
scp -P 2222 file.txt user@remote:/dir/
特点:增量同步、带宽优化、支持断点续传
安装:sudo apt/yum install rsync
常用操作:
# 同步本地到远程(保留权限、压缩传输)
rsync -avzP /local/dir/ user@remote:/remote/dir/
# 远程 → 本地
rsync -avzP user@remote:/remote/dir/ /local/dir/
# 排除特定文件
rsync -avz --exclude='*.tmp' /local/dir/ user@remote:/remote/dir/
# 通过SSH指定端口
rsync -avzP -e 'ssh -p 2222' /local/dir/ user@remote:/remote/dir/
特点:交互式操作,类似FTP但加密
安装:内置(OpenSSH)
常用操作:
# 连接远程服务器
sftp user@remote
# 下载文件
sftp> get /remote/file.txt /local/dir/
# 上传文件
sftp> put /local/file.txt /remote/dir/
# 批量操作
sftp> mget *.log
sftp> mput *.tar.gz
特点:直接下载网络资源(HTTP/FTP)
示例:
# 下载文件
wget https://example.com/file.tar.gz
curl -O https://example.com/file.tar.gz
# 断点续传(wget)
wget -c https://example.com/bigfile.iso
# 通过FTP下载
wget ftp://user:password@ftp.example.com/file.txt
特点:原始网络数据传输(需配合其他命令)
示例:
# 接收端监听端口并保存文件
nc -l 1234 > received_file.tar
# 发送端传输文件
nc -N receiver_ip 1234 < file_to_send.tar
场景:高效传输大量小文件
示例:
# 本地打包后远程解压
tar czf - /local/dir | ssh user@remote "tar xzf - -C /remote/dir"
# 远程打包下载到本地
ssh user@remote "tar czf - /remote/dir" > local_backup.tar.gz
scp
/rsync
/sftp
(SSH加密)rsync
wget
/curl
nc
(需注意防火墙)注意:传输前确保防火墙/端口开放(如SSH默认22端口),大文件建议用screen
/tmux
防止中断。