(1)从服务器下载文件
前言
最近发现我自己运行在阿里云服务器上面的一个小服务,无法正常访问了。通过浏览器访问或者postman就是一直处于发送请求的状态,但是不会报超时也不会停止。所以,我就想把日志文件nohup.out拿下来查看一下,因为在服务器上面查看很不方便。但是,我由于对于Linux的了解还是不够,居然不知道怎么把文件下载到本地。我以前只用过scp向服务器上传文件,但是下载文件我是真的没有搞过。后来发现反过来用scp就行了,但是当局者迷,旁观者清,当时不知怎么的,就没反应过来!
需求
但是我是一定要看看这个日志的,所以我必须把它下载下来。我第一个想到的方案是在服务器上面安装ftp服务,这样我就可以远程管理服务器上的文件了。但是,我也没有玩过这个,所以需要很多的时间成本来做这件事。(因此我准备抽一个时间来学习一下这方面的知识。)
所以,最后我就利用自己的编程知识,自己写了一个服务端和客户端,然后使用scp把服务端传上去。在服务器启动服务端,再在本地启动客户端,将日志文件拿下来了。不得不说是一个很麻烦的方式,但是却是当时的最优解了,哈哈!
因为这样写的程序可能会有风险,但是我一直参与这个过程中。程序只会运行一次,然后就停止了,这样的话,也不会有什么风险了。反正,我这个小服务器也没啥价值,不过这种方式只是适合自己玩一玩!
代码
服务端
package file;import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;public class FileServer {public static void main(String[] args) {try (ServerSocket server = new ServerSocket(10009)) {try (Socket client = server.accept()) {client.shutdownInput(); // 关闭输入流OutputStream out = new BufferedOutputStream(client.getOutputStream());Path path = Paths.get("/home/Alfred/", "nohup.out"); // 获取文件byte[] data = Files.readAllBytes(path); // 写入out.write(data);}} catch (IOException e) {e.printStackTrace();}System.out.println("Execute Successfully!");}}
客户端
package file;import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;public class FileClient {public static void main(String[] args) {try (Socket client = new Socket("host", 10009)) {client.shutdownOutput(); // 关闭输出流InputStream in = new BufferedInputStream(client.getInputStream());// 先读入内存,再一次性写入硬盘,减少硬盘IO次数ByteArrayOutputStream output = new ByteArrayOutputStream();int len = 0;byte[] data = new byte[1024];while ((len = in.read(data)) != -1) {output.write(data, 0, len);}// 使用工具类直接写入文件Path path = Paths.get("C:/Users/Alfred/Desktop/temp", "nohup.out");Files.write(path, output.toByteArray());} catch (IOException e) {e.printStackTrace();}}
}
执行
上传服务端代码到服务器
代码已经上传
编译执行
注意:编译执行服务端代码后,立刻执行客户端代码,因为这里没有设置超时时间,可能会遇到问题。
本地执行结果
结语
不过虽然我取得了日志,但是我并没有解决为什么无法访问的问题,因为那个服务是一个100多行的Java代码——一个简易HTTP图片服务器,使用Socket模拟Http服务器,只要访问就随机返回一张图片。我里面只是简单打印了一点信息,所以我最后只能关闭服务,再启动了。不过这里也算是运用专业知识解决了一点问题(下载文件,哈哈!),不过这种方式真的不好用。下一篇博客,我会继续这个话题,不过是学习使用专业软件完成这个事情的了。
(1)从服务器下载文件相关推荐
- python批量下载文件只有1kb_Python 实现批量从不同的Linux服务器下载文件
基于Python实现批量从不同的Linux服务器下载文件 by:授客 QQ:1033553122 实现功能 批量从不同的Linux服务器下载指定文件 测试环境 Win7 64位 Python 3.3. ...
- Python 实现批量从不同的Linux服务器下载文件
基于Python实现批量从不同的Linux服务器下载文件 by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用方法 1 1. 编辑配置文件conf/file_for_downl ...
- python批量下载网页文件夹_Python实现批量从不同的Linux服务器下载文件
基于Python实现批量从不同的Linux服务器下载文件 by:授客 实现功能 批量从不同的Linux服务器下载指定文件 测试环境 Win7 64位 Python 3.3.2 pscp 64位 下载地 ...
- CentOS6中连接ftp服务器下载文件时出现了java.net.SocketException: Connection reset
问题描述:连接CentOS6中的ftp服务器下载文件时出现了java.net.SocketException: Connection reset 解决办法: 1.查看防火墙状态,发现防火墙已开启 se ...
- 如何登陆FTP服务器下载文件
如何登陆FTP服务器下载文件 在网上我们经常可以看到很多如何搭建FTP服务器的经验,但是却缺少详细的如何登陆FTP服务器的经验,当然对于电脑熟练者来说这可能很简单,但是我想也有相当一部分人不知道如何从 ...
- ubuntu从本地上传文件到云服务器、从云服务器下载文件到本地的命令(亲测有效)
1.ubuntu从本地上传文件到云服务器: sudo scp 本地文件路经 username@目标ip:目标路径 在本地打开终端,输入命令,如: scp ./localfile.txt usernam ...
- Java Web实现 使用浏览器从服务器下载文件
Java Web实现 使用浏览器从服务器下载文件. 代码实现: package com.juneyaoair.util;import lombok.SneakyThrows;import javax. ...
- 使用JSP从服务器下载文件的示例
在此示例中,我们将下载jsp文件.但是您可以下载任何文件.要从服务器下载文件,应指定名为APPLICATION / OCTET-STREAM的内容类型. index.jsp 该文件提供了下载jsp文件 ...
- 从FTP服务器下载文件部署更新linux服务器上的服务
作为软件测试人员,经常要发布开发的集成包.本来嘛,更新个服务,没什么大不了.但是集成包打出来,要更新的服务有9个(分别部署在三台服务器上),并且以后还会增加.如果手动更新,每次更新时间都得20分钟以上 ...
- 使用scp上传文件到服务器或从服务器下载文件(支持跨越跳板机)
转载 原文链接 原贴写的很好,我转载懒得排版了 scp是什么? 使用man scp可以看到scp的解释『scp - secure copy (remote file copy program)』,sc ...
最新文章
- linux 在终端修改文件,linux命令行学习(42):修改.bashrc文件
- graythresh matlab,Matlab-图形算法和图像处理指南
- python做直方图-python OpenCV学习笔记实现二维直方图
- element-ui中对话框dialog不显示,仅背景变灰
- PADS 9.5安装教程附安装包资源
- Genymotion设置代理至BurpSuite和Charles
- FortiGate 的相关知识
- python的编程模式有哪两种_python程序的两种运行方式是什么
- 【C语言】输入5个整数并按输入顺序逆序输出
- 资源放送丨《数据模型重构案例分享》PPT视频
- 深入比特币原理(五)——高级交易与脚本
- SQL:查询、替换字符串中的回车、换行、回车换行
- Android大图片裁剪解决方案
- 解决Spring Boot 拦截器注入service为空的问题
- Java架构师和大数据架构师的区别是什么?哪个更有发展前景?
- 广义线性模型解读必看文章
- USACO 19 FEB Mowing Mischief P 题解
- TypeError:Cannot read property 'bind' of underfined(React)
- 如何搜索别人百度云网盘分享的资源
- QT 自定义加载等待(Loading)提示框