centos7中,SCP 和wget有什么优缺点
701 2025-04-12 13:26
在 CentOS 7 中,
SCP 和 wget 是两种常用的文件传输工具,它们各有优缺点,适用于不同的场景。以下是详细的对比:SCP(Secure Copy)
优点
-
安全性高:基于 SSH 协议进行加密传输,数据传输过程中不会被窃取。
-
简单易用:命令简单,支持直接在本地和远程主机之间传输文件。
-
系统资源占用低:对系统后台负荷较小,不会给系统带来较大负担。
-
跨服务器传输:可以直接在两台服务器之间传输文件,无需额外配置。
缺点
-
传输速度慢:由于加密处理,传输速度相对较慢,特别是对于大文件。
-
不支持断点续传:一旦传输中断,需要重新开始,无法从断点处继续。
-
功能有限:主要功能是文件传输,不支持递归下载等复杂功能。
wget(Web Get)
优点
-
功能强大:支持断点续传、递归下载、代理等多种功能。
-
稳定性高:在网络不稳定时可以自动重试和恢复下载。
-
灵活性强:支持 HTTP、HTTPS 和 FTP 协议,适用于多种网络环境。
-
适合批量下载:可以通过指定参数实现批量下载。
-
适合镜像站点:可以递归下载整个网站或目录,重建原始站点的目录结构。
缺点
-
不支持加密传输:默认情况下不支持加密传输,需要通过 HTTPS 等协议实现安全传输。
-
不适合文件上传:主要用于下载文件,不支持将本地文件上传到远程服务器。
-
配置相对复杂:在某些复杂场景下,需要配置较多参数。
总结
-
如果你需要在服务器之间安全地传输文件,且对传输速度要求不高,
SCP是更好的选择。 -
如果你需要从网络上下载文件,特别是需要递归下载或断点续传功能,
wget更适合。
根据你的具体需求选择合适的工具可以提高工作效率。
如何使用wget进行局域网内centos文件夹的数据传输
下面给出几种在局域网中用
核心思路只有两步:
wget 整目录拉取 CentOS(或其他 Linux)文件的最常见、最稳妥的做法。核心思路只有两步:
-
在“源主机”把要传的目录变成 HTTP(S) 可索引 的形式;
-
在“目标主机”用
wget的 mirror 选项递归整站拉取。
一、源主机:把目录挂成 HTTP(索引可见)
方法 1:一句话 Python HTTP(≥3 自带)
bash
复制
# 进入要共享的目录
cd /data/iso
# 默认 8000 端口,允许局域网任意 IP
python3 -m http.server 0.0.0.0:8000
浏览器访问
http://<源IP>:8000/ 能看到文件列表即可。方法 2:Nginx(目录自动索引)
bash
复制
yum -y install nginx
cat >/etc/nginx/conf.d/share.conf <<'EOF'
server {
listen 8000;
location / {
root /data/iso;
autoindex on; # 关键:打开目录索引
autoindex_exact_size off;
charset utf-8;
}
}
EOF
systemctl enable --now nginx
防火墙放行:
bash
复制
firewall-cmd --permanent --add-port=8000/tcp
firewall-cmd --reload
二、目标主机:wget 镜像整目录
1. 最常用参数组合
bash
复制
# 新建本地目录
mkdir /tmp/iso && cd /tmp/iso
# 镜像(递归、保持结构、断点续传、不上升父目录)
wget --mirror --no-parent --continue \
--reject="index.html*,*.tmp" \
http://192.168.1.100:8000/
解释
-
--mirror等价于-r -N -l inf --no-remove-listing,递归+时间戳+无限深度 -
--no-parent不追到父目录 -
--continue断点续传 -
--reject把自动生成的索引页或临时文件排除掉,省得本地多出一堆index.html?C=D;O=A之类
2. 如果目录很大、想后台跑
bash
复制
nohup wget -m -np -c -R "index.html*" \
http://192.168.1.100:8000/ >wget.log 2>&1 &
tail -f wget.log
3. 只拉指定子目录
bash
复制
wget -m -np -c http://192.168.1.100:8000/centos/7/isos/x86_64/
三、可选加速技巧
-
开大并行
新版wget(≥1.21)支持--parallel=N:bash
-
复制
wget -m -np -c --parallel=8 http://... -
局域网用
rsync更香
如果两端都是 Linux,且 ssh 端口可达,其实一条rsync更快:bash
-
复制
rsync -avz --progress root@192.168.1.100:/data/iso/ /tmp/iso/
四、常见坑排查
-
索引页看不到文件 → 源主机没开
autoindex或不在共享目录下启动服务。 -
wget 只抓到
index.html→ 忘了-r/--mirror或 URL 写成了目录名却少了尾斜杠/。 -
速度为 0 → 防火墙 / SELinux 拦截,关闭或放行端口。
-
中文乱码 → 在 Nginx 加
charset utf-8;或export LANG=zh_CN.UTF-8。
一句话总结
把要传的目录用
python3 -m http.server 或 Nginx 挂成“可浏览网页”,然后在另一台机 wget --mirror --no-parent --continue http://<源IP>:端口/ 即可把整个目录原样搬过去。
scp可以进行局域网内centos文件夹的数据传输吗?
可以,scp 完全支持局域网内 CentOS 与 CentOS(或任意 Linux)之间整目录传输,而且因为走的是 SSH 协议,无需额外装服务、配防火墙端口,只要两台机子能
ssh 互通 即可。下面给出最常用、最不容易踩坑的用法。一、前置条件(只需一次)
-
双方已安装 openssh-clients(CentOS 默认自带)。
-
知道对端 IP 和账号,且本机曾成功
ssh user@ip登录过(避免首次询问指纹)。 -
如果走普通用户,请确保对源目录有读权限、对目标目录有写权限;或者直接 root。
二、整目录上传/下载语法
1. 把本地 整个目录 推到局域网另一台 CentOS
bash
复制
# -r 递归 -p 保留时间戳权限 -P 显示进度
scp -rp /data/iso root@192.168.1.100:/tmp
说明:
-
如果
/tmp已存在,结果会是/tmp/iso/...; -
想直接变成
/tmp/iso,把源目录写成/data/iso/(带斜杠)即可。
2. 从局域网 CentOS 拉整个目录 到本地
bash
复制
scp -rp root@192.168.1.100:/data/iso /tmp
3. 断点续传(大目录推荐)
scp 本身不支持断点续传,如果文件特别大或网络不稳,请改用
rsync:bash
复制
# 推
rsync -avz --progress /data/iso/ root@192.168.1.100:/tmp/iso/
# 拉
rsync -avz --progress root@192.168.1.100:/data/iso/ /tmp/iso/
rsync 只传增量,中断后重跑即可续传。
三、速度优化小贴士
-
压缩开关
scp 已内置-C压缩,对文本/源代码效果明显,但对已压缩的.iso、.zip几乎没增益,反而占 CPU,可不加。bash
-
复制
scp -rpC src/ user@ip:/dst -
** cipher 选快算法**
如果 CPU 吃紧,可换轻量 cipher(需两端都支持):bash -
复制
scp -rp -o Ciphers=aes128-gcm@openssh.com src/ user@ip:/dst -
并行传输
scp 只能单线程;目录里文件多且小时,可结合parallel或xargs -P开多进程:bash
-
复制
find src/ -type f | parallel -j 8 scp -p {} user@ip:/dst/{//}/
四、常见报错速查
表格
复制
| 报错信息 | 原因&解决 |
|---|---|
Permission denied |
对端目录无写权限 / SELinux 限制 / 没用 root |
No such file or directory |
路径写错;目录名带空格未加引号 |
ssh: connect to host port 22: Connection refused |
对端 sshd 没开或防火墙拦了 22 端口 |
scp: /dst: not a regular file |
目标路径不存在或拼成了文件名 |
五、一句话总结
只要
ssh 能通,局域网 CentOS 之间拷整个目录最省事就是:bash
复制
scp -rp /本地目录/ 用户@对端IP:/目标路径/
大目录/断点续传 请直接上
rsync -avz --progress。
全部评论