Nachdem die Manpage auf Filterregeln zu lesen und suchen hier: Using Rsync filter to include/exclude filesRsync Filter in einem Python-Schleife
Ich verstehe nicht, warum der folgende Code funktioniert nicht.
import subprocess, os
from ftplib import FTP
ftp_site = 'ftp.ncbi.nlm.nih.gov'
ftp = FTP(ftp_site)
ftp.login()
ftp.cwd('genomes/genbank/bacteria')
dirs = ftp.nlst()
for organism in dirs:
latest = os.path.join(organism, "latest_assembly_versions")
for path in ftp.nlst(latest):
accession = path.split("/")[-1]
fasta = accession+"_genomic.fna.gz"
subprocess.call(['rsync',
'--recursive',
'--copy-links',
#'--dry-run',
'-vv',
'-f=+ '+accession+'/*',
'-f=+ '+fasta,
'-f=- *',
'ftp.ncbi.nlm.nih.gov::genomes/genbank/bacteria/'+latest,
'--log-file=scratch/test_dir/log.txt',
'scratch/' + organism])
Ich habe auch versucht '--exclude=*[^'+fasta+']'
zu versuchen, Dateien auszuschließen, die fasta
nicht statt -f=- *
die fasta
Für jedes Verzeichnis path
innerhalb latest/*
, möchte ich die Datei entsprechen genau übereinstimmt. Es wird immer genau eine Datei fasta
im Verzeichnis latest/path
sein.
EDIT: Ich teste diese mit rsync Version 3.1.0 und haben mit früheren Versionen Kompatibilitätsprobleme gesehen.
Hier ist ein Link zu Code arbeiten, sollten Sie in ein Python-Interpreter einfügen können, um die Ergebnisse eines bekommen „Trockenlauf“, was alles nicht auf Ihren Computer herunterladen werden: http://pastebin.com/0reVKMCg es alles unter ftp.ncbi.nlm.nih.gov::genomes/genbank/bacteria/'+latest
bekommt, was ich nicht will. und wenn ich das Skript mit '-f=- *'
unkommentiert laufen, ist es nicht alles bekommen, was die Antwort hier Using Rsync filter to include/exclude files
funktioniert Sind Sie sicher, dass Sie 'rsync' über FTP verwenden können ?: http://serverfault.com/questions/24622/how-to-use-rsync-over -ftp –
Ja, da bin ich mir sicher. Ich hatte ein ähnliches Skript, das wunderbar funktionierte, bis mir klar wurde, dass einige der Dateien, die ich erhielt (nach meinen Filtern), Dateien waren, die ich nicht haben wollte. – truthling
hmm, könnten Sie das Arbeits-Snippet posten, damit wir eine Beispielausgabe erhalten und dann weiter erläutern können, was Sie filtern möchten? –