Можете ли вы по конвейеру получить несколько файлов с FTP?

Я пытаюсь получить сотни геномов из NCBI и передать их на сервер Phaster (напрямую или через мой локальный сервер). Можете ли вы передать вывод FTP, извлекающего несколько файлов одной командой? Я пробовал использовать rsync и wget.

Любые FTP, которые хорошо работают в конвейерах?


person Avi    schedule 20.07.2020    source источник
comment
Можете ли вы поделиться командами, которые вы используете для извлечения файла (или короткий сценарий оболочки/bash)? Это поможет читателям SO дать вам совет, основанный на уже проделанной вами работе.   -  person dash-o    schedule 21.07.2020
comment
Не могли бы вы уточнить ваши потребности. Похоже, вы хотите загрузить кучу файлов с ftp-сервера. Вы можете использовать wget wget --user=username --password=123 ftp://ftp.place.to.downloadfrom.com/path2files   -  person Bhaskar Tallamraju    schedule 21.07.2020
comment
Можешь попробовать ncftp! Но для работы с конвейерами (см. coproc в bash) лучше использовать плоский простой ftp клиент.   -  person F. Hauri    schedule 15.03.2021


Ответы (1)


Например, у меня есть файл с содержимым ниже.

Kluyveromyces_lactis ftp://ftp.ncbi .nlm.nih.gov/genomes/all/GCF/000/002/515/GCF_000002515.2_ASM251v1 last_Complete Genome_Major Leishmania_major_strain_Friedlin ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/002/725/GCF_000002725.2_ASM272v2 last_Complete Genome_Major Plasmodium_falciparum_3D7 ftp ://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/002/765/GCF_000002765.5_GCA_000002765 last_Complete Genome_Major Caenorhabditis_elegans ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/002 /985/GCF_000002985.6_WBcel235 last_Complete Genome_Major Bacillus_pseudofirmus_OF4 ftp://ftp .ncbi.nlm.nih.gov/genomes/all/GCF/000/005/825/GCF_000005825.2_ASM582v2 last_Complete Genome_Major Escherichia_coli_str._K-12_substr._MG1655 ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000 /005/845/GCF_000005845.2_ASM584v2 last_Complete Genome_Major Methanococcus_voltae_A3 ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/006/175/GCF_000006175.1_ASM617v2 last_Complete Genome_Major

И, если я хочу загрузить файлы Kluyveromyces_lactis .fna и .gtf, я запускаю php-код ниже

<?php
$process=new GDownloading("assembly_summary_refseq_new.txt","ftp_links_of_species_1.txt", "Chromosome");
//$process->Sorting();
$process->Download();

class GDownloading
{
    public $s_file, $r_file, $g_opt;
    function __construct($SourceFile, $ResultFile, $Goption)
    {
        $this->s_file=$SourceFile;
        $this->r_file=$ResultFile;
        $this->g_opt=$Goption;
    }
    function Sorting()
    {
        $gfile = fopen($this->s_file, "r");
        $resfile = fopen($this->r_file, "wb");
        while($line=fgets($gfile, 1000000))
        {
            if($line[0]=="#")
            {continue;}
            $pts = explode("\t", $line);
            if (substr($pts[19], 0, 4) == "ftp:")
            {
                if ($pts[10]=="latest" && $pts[11]==$this->g_opt && $pts[12]=="Minor")
                {
                    $ftp_link = $pts[19];
                    $sp_name = str_replace(" ", "_", $pts[7]);
                    fwrite($resfile, "$sp_name\t$ftp_link\t$pts[10]_$pts[11]_$pts[12]\n");
                }
                else
                {
                    continue;
                }
            }
        }
        fclose($gfile);
        fclose($resfile);
    }
    function Download()
    {
        $ftp_link = fopen($this->r_file, "r");
        if(!is_dir("Chromosome"))
        {
            mkdir("Chromosome");
        }
        $download_count=0;
        while($line=fgets($ftp_link, 10000))
        {
            $dir=scandir("Chromosome");
            $pts=explode("\t", $line);
            $pts[0]=str_replace("/", "", $pts[0]);
            $pts[0]=str_replace(":","_", $pts[0]);
            if(in_array("$pts[0]", $dir))
            {
                $folder_name=$pts[0] . "_" . $download_count;
            }
            else
            {
                $folder_name = $pts[0];
            }
            $link = $pts[1];
            mkdir("Chromosome/$folder_name") ;
            $file=explode("/", $link);
            $file=end($file);
            $fna=$link."/".$file."_genomic.fna.gz";
            $gtf=$link."/".$file."_genomic.gtf.gz";
            system("wget -c ".$fna." -P Chromosome/".$folder_name);
            system("wget -c ".$gtf." -P Chromosome/".$folder_name);
            $download_count++;
        }
    }
}

?>
person Sh.Mehdiyev    schedule 15.03.2021
comment
Пожалуйста, отформатируйте свой ответ, чтобы его можно было прочитать. - person kk.; 15.03.2021
comment
Простите, что вы имели в виду под форматом слова? Я могу добавить некоторые //комментарии только к своей кодовой странице. Вы это имели в виду? - person Sh.Mehdiyev; 28.04.2021