คุณสามารถไปป์ไลน์จาก FTP เพื่อดึงข้อมูลหลายไฟล์ได้หรือไม่

ฉันกำลังพยายามดึงจีโนมหลายร้อยรายการจาก NCBI และไปป์พวกมันไปยังเซิร์ฟเวอร์ Phaster (โดยตรงหรือผ่านเซิร์ฟเวอร์ในเครื่องของฉัน) คุณสามารถไพพ์เอาต์พุตของ FTP ที่ดึงข้อมูลหลายไฟล์ในคำสั่งเดียวได้หรือไม่? ฉันได้ลองใช้ rsync และ wget แล้ว

FTP ใดบ้างที่ทำงานได้ดีในไปป์ไลน์?


person Avi    schedule 20.07.2020    source แหล่งที่มา
comment
คุณสามารถแชร์คำสั่งที่คุณใช้เพื่อดึงไฟล์ (หรือสคริปต์เชลล์ / ทุบตีแบบสั้น) ได้หรือไม่? มันจะช่วยให้ผู้อ่าน 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 latest_Complete Genome_Major Leishmania_major_strain_Friedlin ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/002/725/GCF_000002725.2_ASM272v2 latest_Complete Genome_Major Plasmodium_falciparum_3D7 ftp ://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/002/765/GCF_000002765.5_GCA_000002765 latest_Complete Genome_Major Caenorhabditis_elegans ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/002 /985/GCF_000002985.6_WBcel235 latest_Genome_Major Bacillus_pseudofirmus_OF4 ที่สมบูรณ์ ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/005/825/GCF_000005825.2_ASM582v2 latest_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 latest_Complete Genome_Major Methanococcus_voltae_A3 ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/006/175/GCF_000006175.1_ASM617v2 latest_จีโนมที่สมบูรณ์_หลัก

และถ้าฉันต้องการดาวน์โหลดไฟล์ 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
ขอโทษค่ะ รูปแบบคำคุณหมายถึงอะไร? ฉันสามารถเพิ่ม //comments ลงในโค้ดเพจของฉันได้เท่านั้น คุณหมายถึงอย่างนั้นเหรอ? - person Sh.Mehdiyev; 28.04.2021