mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Biomart doesn't work on the trunk yet (Before or after this commit). axt to lav tool won't be functional until multiple datasets per history item is available on trunk - although I could make it so that only the lav file is generated and no fasta files, in which case it wouldn't be an issue.
63 lines
2.3 KiB
Python
63 lines
2.3 KiB
Python
#!/usr/bin/env python
|
|
|
|
#This script removes deleted dataset files.
|
|
#Takes 3 arguments:
|
|
# 1: database directory to clean
|
|
# 2: postgres database name
|
|
# 3 (optional): number of days to allow as a buffer, defaults to 2
|
|
#python cleanup_datasets.py /home/universe/server-home/wsgi-postgres/database/files/ galaxy_test 2
|
|
|
|
import sys, os, tempfile, time
|
|
try:
|
|
database_dir = sys.argv[1]
|
|
database_name = sys.argv[2]
|
|
num_days = 2
|
|
try:
|
|
num_days = int(sys.argv[3])
|
|
except:
|
|
print "Using Default of 2 days buffer on delete"
|
|
except:
|
|
print "Usage: python %s path_to_files:/home/universe/server-home/wsgi-postgres/database/files/ database_name:galaxy_test [num_days_buffer:2]" % sys.argv[0]
|
|
sys.exit(0)
|
|
id_file = tempfile.NamedTemporaryFile('w')
|
|
id_filename = id_file.name
|
|
id_file.close()
|
|
ids = []
|
|
|
|
command = "psql -d %s -c \"select id from dataset;\" -o %s" % (database_name, id_filename)
|
|
print "Getting IDs:", command
|
|
id_file = os.popen(command)
|
|
id_file.close()
|
|
for line in open(id_filename,'r'):
|
|
try:
|
|
ids.append(int(line.strip()))
|
|
except:
|
|
print line.strip(),"is not a valid id, skipping."
|
|
os.unlink(id_filename)
|
|
if len(ids) < 1:
|
|
print "Less than 1 IDs have been found! Deleting proccess has been canceled."
|
|
sys.exit(0)
|
|
print "-----%i IDs Retrieved -----" % len(ids)
|
|
print "----- Checking database directory for deleted ids: %s -----" % database_dir
|
|
file_size = 0
|
|
num_delete = 0
|
|
for result in os.walk(database_dir):
|
|
this_base_dir,sub_dirs,files = result
|
|
for file in files:
|
|
if file.startswith("dataset_") and file.endswith(".dat"):
|
|
id = int(file.replace("dataset_","").replace(".dat",""))
|
|
file_name = os.path.join(this_base_dir,file)
|
|
if id not in ids:
|
|
file_time = os.path.getctime(file_name)
|
|
if time.time() > file_time + (num_days*60*60*24): #num_days (default=2) days buffer room
|
|
num_delete += 1
|
|
size = os.path.getsize(file_name)
|
|
file_size += size
|
|
os.unlink(file_name)
|
|
print file_size, "bytes"
|
|
print float(file_size) / 1024, "kilobytes"
|
|
print float(file_size) / 1024 / 1024, "Megabytes"
|
|
print float(file_size) / 1024 / 1024 / 1024, "Gigabytes"
|
|
print "%i files deleted" % num_delete
|
|
|
|
sys.exit(0) |