如何使用wget通过IP下载无域名服务器上的大tar.gz文件?
Hey,我来帮你搞定这个wget获取文件的问题!你的服务器没绑定域名,直接用IP访问就行,但得先把几个关键环节捋顺,我一步步给你讲:
第一步:先确认源服务器的基础条件是否满足
在你那台IP为1.2.3.4的服务器上,用PuTTY登录后先做这几件事:
- 检查文件权限:执行
ls -l /var/www/your-file.tar.gz(把your-file.tar.gz换成你实际的文件名),确保文件的权限位最后三位是r--(也就是其他人可读,比如显示-rw-r--r--)。如果权限不够,运行chmod o+r /var/www/your-file.tar.gz来添加读权限。 - 确认Web服务是否运行:/var/www一般是Apache或Nginx的默认网页根目录,得确保Web服务已经启动:
- 若是Apache:执行
systemctl status apache2,如果显示未运行,就用systemctl start apache2启动它 - 若是Nginx:执行
systemctl status nginx,未运行的话用systemctl start nginx启动
- 若是Apache:执行
- 检查防火墙规则:源服务器的防火墙必须允许80端口(HTTP)的入站请求:
- 用ufw的话:运行
ufw allow 80/tcp,再执行ufw reload生效 - 用iptables的话:运行
iptables -A INPUT -p tcp --dport 80 -j ACCEPT,然后保存规则(比如iptables-save > /etc/iptables/rules.v4,不同系统可能略有差异)
- 用ufw的话:运行
第二步:用正确的wget命令获取文件
如果上面的条件都搞定了,在你要接收文件的另一台服务器上,执行以下命令:
wget http://1.2.3.4/your-file.tar.gz -P /path/to/save
简单解释下:
http://1.2.3.4是你的源服务器IP,Web服务默认监听80端口,所以不用额外加端口号your-file.tar.gz替换成你实际的文件名-P /path/to/save是可选参数,用来指定文件保存的目标目录,不写的话就默认保存在当前操作的目录
备选方案:如果Web服务没法用怎么办?
要是因为某些原因没法启动Web服务,你可以用scp命令通过SSH传输文件(前提是两台服务器能通过SSH连通):
在目标服务器上执行:
scp your-ssh-user@1.2.3.4:/var/www/your-file.tar.gz /path/to/save
把your-ssh-user换成源服务器的SSH登录用户名,执行后输入源服务器的密码就行。如果文件特别大,还可以加-C参数开启压缩传输,能加快速度:
scp -C your-ssh-user@1.2.3.4:/var/www/your-file.tar.gz /path/to/save
常见问题排查
- 如果wget提示
Connection refused:大概率是源服务器的Web服务没启动,或者防火墙没开放80端口 - 如果wget提示
404 Not Found:检查文件名拼写是否正确,或者文件是否真的在/var/www目录下(有些系统的Web根目录是/var/www/html,需要把文件移过去或者修改Web服务配置) - 如果scp提示
Permission denied:检查源服务器上的文件权限,或者SSH用户是否有权限访问/var/www目录
内容的提问来源于stack exchange,提问作者Arnie
相关产品推荐
相关产品推荐

