服务器上架文档,定时向服务器上传文件的实现

我用师兄的脚本从ENA上下载fastq数据----https://github.com/Yuanting-Zheng/wonderful_download 但是由于我下载的数据量很大,而服务器又不能联网,所以只能先下载到自己的电脑然后再上传到服务器上。这样就会出现一个问题,如果我不及时把下载下来的文件上传到服务器上的话,我电脑的磁盘空间显然是不够的,下面讲怎么用python定时实现下载完成后的文件传到服务器并同时删除上传完成的文件。

1.批量上传下载完成的数据并删除

#4-successful_upload.py----该脚本用于把文件上传到服务器

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import os

path='/Users/mac/Desktop/test/PRJNA437324' #下载完成后存放文件存放目录

dirs=os.listdir(path)

dirs.sort() #排序

#定义一个计算path目录下有多少文件的函数。

def countFile(dirs):

count=0

for file in dirs:

if os.path.isfile(os.path.join(path,file)):

count +=1

return count

#当前文件夹中的文件数大于3时候,把文件夹中的文件上传到服务器,并删除该文件(大于3说明已经有文件下好了)。

#注:我的下载是不间断进行的,所以需要确定文件下载完全后才传到服务器。

countFile(dirs)

while countFile(dirs)>3:

new_dirs=dirs[:len(dirs)-3]

#上传到服务器,并删除该文件

for new_file in new_dirs:

os.system('scp '+path+'/'+new_file+' xx@xx.xx.xx.xx:/data3/maize_data/PRJNA437324')

#scp命令,为了上传文件到服务器可以不输入服务器密码,请参考我师兄的简书:https://www.jianshu.com/p/306cb0c3508d

os.system('rm -f '+path+'/'+new_file)

2.定时运行上述脚本

#5-run_regularly.py:该脚本实现的是每间隔多少时间运行上述脚本。(确保能源源不断的把下载完成的文件传到服务器)

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import os,time

path0='/Users/mac/Desktop/test/'

while True:

os.popen('python '+path0+'/4-successful_upload.py')

time.sleep(3600) #3600秒的时间间隔。

3.测试

#添加可执行权限

chmod u+x 4-successful_upload.py 5-run_regularly.py

#测试仅运行脚本4,实际运行时候只需要运行脚本5,实际运行的命令如下:

nohup ./5-run_regularly.py >run_regularly.log &

#注:如果下载完成记得在后台把这个命令给kill掉。

(1)正在下载中的数据(有gz和gz.aspx代表正在下载)

85629968fe9e

file

(2)下面为执行脚本4的结果,很显然已经成功实现了前面我所要的结果。

自己电脑:

85629968fe9e

file

服务器端:

85629968fe9e

file

本文由博客一文多发平台 OpenWrite 发布!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值