centos7中,SCP 和wget有什么优缺点

701 2025-04-12 13:26

在 CentOS 7 中,SCPwget 是两种常用的文件传输工具,它们各有优缺点,适用于不同的场景。以下是详细的对比:

SCP(Secure Copy)

优点

  1. 安全性高:基于 SSH 协议进行加密传输,数据传输过程中不会被窃取。
  • 简单易用:命令简单,支持直接在本地和远程主机之间传输文件。
  • 系统资源占用低:对系统后台负荷较小,不会给系统带来较大负担。
  • 跨服务器传输:可以直接在两台服务器之间传输文件,无需额外配置。

缺点

  1. 传输速度慢:由于加密处理,传输速度相对较慢,特别是对于大文件。
  • 不支持断点续传:一旦传输中断,需要重新开始,无法从断点处继续。
  • 功能有限:主要功能是文件传输,不支持递归下载等复杂功能。

wget(Web Get)

优点

  1. 功能强大:支持断点续传、递归下载、代理等多种功能。
  • 稳定性高:在网络不稳定时可以自动重试和恢复下载。
  • 灵活性强:支持 HTTP、HTTPS 和 FTP 协议,适用于多种网络环境。
  • 适合批量下载:可以通过指定参数实现批量下载。
  • 适合镜像站点:可以递归下载整个网站或目录,重建原始站点的目录结构。

缺点

  1. 不支持加密传输:默认情况下不支持加密传输,需要通过 HTTPS 等协议实现安全传输。
  • 不适合文件上传:主要用于下载文件,不支持将本地文件上传到远程服务器。
  • 配置相对复杂:在某些复杂场景下,需要配置较多参数。

总结

  • 如果你需要在服务器之间安全地传输文件,且对传输速度要求不高,SCP 是更好的选择。
  • 如果你需要从网络上下载文件,特别是需要递归下载或断点续传功能,wget 更适合。
根据你的具体需求选择合适的工具可以提高工作效率。

 

 

 

如何使用wget进行局域网内centos文件夹的数据传输
下面给出几种在局域网中用 wget 整目录拉取 CentOS(或其他 Linux)文件的最常见、最稳妥的做法。
核心思路只有两步:
  1. 在“源主机”把要传的目录变成 HTTP(S) 可索引 的形式;
  2. 在“目标主机”用 wgetmirror 选项递归整站拉取。

一、源主机:把目录挂成 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/
 

三、可选加速技巧

  1. 开大并行
    新版 wget(≥1.21)支持 --parallel=N
    bash
     
  • 复制
    wget -m -np -c --parallel=8 http://...
     
  • 局域网用 rsync 更香
    如果两端都是 Linux,且 ssh 端口可达,其实一条 rsync 更快:
    bash
     
  1. 复制
    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 互通 即可。下面给出最常用、最不容易踩坑的用法。

一、前置条件(只需一次)

  1. 双方已安装 openssh-clients(CentOS 默认自带)。
  2. 知道对端 IP 和账号,且本机曾成功 ssh user@ip 登录过(避免首次询问指纹)。
  3. 如果走普通用户,请确保对源目录有读权限、对目标目录有写权限;或者直接 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 只传增量,中断后重跑即可续传。

三、速度优化小贴士

  1. 压缩开关
    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 只能单线程;目录里文件多且小时,可结合 parallelxargs -P 开多进程:
    bash
     
  1. 复制
    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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

全部评论

·