云服务器有什么办法定时下载文件到本地么?

云服务器有什么办法定时下载文件到本地么?,第1张

不知道你习惯用什么命令下载,我一般是用scp

1、先写个下载文件的脚本download.sh,用到了‘sshpass’工具(这个工具要安装,安装步骤很简单)传服务器密码【除了这个还有其他方法可以免输密码】

date=$(date +%Y-%m%d)

sshpass -p 密码 scp root@ip:/**/XXX1_$date.csv /**/

sshpass -p 密码 scp root@ip:/**/XXX2_$date.csv /**/

sshpass -p 密码 scp root@ip:/**/XXX3_$date.csv /**/

这是去服务器下载,反过来写在服务器上运行就是发送(用发送的话可以加个文件是否存在的判断比较严谨)

2、crontab -e创建一个定时任务定时执行download.sh

如:00 23 * * * /**/download.sh每天晚上11点执行

以上,我写的很简洁你可以完善脚本,希望能对你有用

这个是可以向服务器端发送文字的程序,就是在客户端发送一句hello在服务器也可以接受到hello,这个程序可以修改一下就可以了。具体修改方法是增加一个定时器,然后把字符流改成字节流,现在有点忙,你先研究啊,近两天帮你写写看。

服务器端:

import java.net.*

import java.io.*

public class DateServer {

public static void main(String[] args) {

ServerSocket server=null

try{

server=new ServerSocket(6666)

System.out.println(

"Server start on port 6666...")

while(true){

Socket socket=server.accept()

new SocketHandler(socket).start()

/*

PrintWriter out=new PrintWriter(

new OutputStreamWriter(

socket.getOutputStream()

)

)

out.println(new java.util.Date().toLocaleString())

out.close()

*/

}

}catch(Exception e){

e.printStackTrace()

}finally{

if(server!=null) {

try{

server.close()

}catch(Exception ex){}

}

}

}

}

class SocketHandler extends Thread {

private Socket socket

public SocketHandler(Socket socket) {

this.socket=socket

}

public void run() {

try{

PrintWriter out=new PrintWriter(

new OutputStreamWriter(

socket.getOutputStream()

)

)

out.println(

new java.util.Date().

toLocaleString())

out.close()

}catch(Exception e){

e.printStackTrace()

}

}

}

客户端:

package com.briup

import java.io.*

import java.net.*

public class FtpClient {

public static void main(String[] args) {

if(args.length==0) {

System.out.println("Usage:java FtpClient file_path")

System.exit(0)

}

File file=new File(args[0])

if(!file.exists()||!file.canRead()) {

System.out.println(args[0]+" doesn't exist or can not read.")

System.exit(0)

}

Socket socket=null

try{

socket=new Socket(args[1],Integer.parseInt(args[2]))

BufferedInputStream in=new BufferedInputStream(

new FileInputStream(file)

)

BufferedOutputStream out=new BufferedOutputStream(

socket.getOutputStream()

)

byte[] buffer=new byte[1024*8]

int i=-1

while((i=in.read(buffer))!=-1) {

out.write(buffer,0,i)

}

System.out.println(socket.getInetAddress().getHostAddress()+" send file over.")

in.close()

out.close()

}catch(Exception e){

e.printStackTrace()

}finally{

if(socket!=null) {

try{

socket.close()

}catch(Exception ex){}

}

}

}

}


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/634399.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-18
下一篇2023-07-18

发表评论

登录后才能评论

评论列表(0条)

    保存