Как скачать файлы только с определенным числом, содержащимся в имени файла в каталоге?

Вопрос или проблема

Я пытаюсь скачать файлы с удаленного сервера на свой. Они все находятся в директории с именем.

-r 00_fastq

Которая содержит файлы, имена которых выглядят так:

142_R2_001.fastq.gz
143_R1_001.fastq.gz
143_R2_001.fastq.gz
144_R1_001.fastq.gz
144_R2_001.fastq.gz
147_R1_001.fastq.gz

Поэтому я сделал

get -r 00_fastq

Мне нужно получить весь содержимое этой директории. Я потерял соединение на ‘144_R1_001.fastq.gz’. Я хотел бы скачать этот файл и следующие.

Используйте опцию -a, чтобы возобновить загрузку, автоматически пропуская файлы, которые у вас уже есть:

sftp> get -ar 00_fastq

Аналогично: Установите lftp и используйте его команду mirror, чтобы скачать только то, чего не хватает.

$ lftp sftp://data.example.com
lftp> mirror -v 00_fastq

Обе команды делают примерно одно и то же, хотя mirror в lftp кажется, что может работать лучше, чем автоматическое возобновление в OpenSSH sftp.

lftp также поддерживает использование подстановочных знаков:

lftp> cd 00_fastq
lftp> lcd 00_fastq
lftp> mget 1[4-9]*
lftp> mget [2-9]*

Если вы часто теряете соединение с облачным сервером, который выполняет загрузку, установите tmux или screen и запустите sftp/lftp в сессии tmux, к которой вы сможете подключиться позже.

Ответ или решение

Для решения задачи загрузки файлов с удаленного сервера, когда необходимо продолжить загрузку с определенного файла, можно воспользоваться несколькими подходами. Рассмотрим эти методы и сопутствующие инструменты, которые помогут эффективно выполнять данную задачу, учитывая предоставленный контекст и специфику работы с файлами, содержащими номера в своих именах.

Теория

При работе с загрузкой файлов из удаленного сервера через протоколы, такие как SFTP, наиболее важными аспектами являются надежность и эффективность передачи данных. Потеря соединения во время загрузки файлов может привести к необходимости повторной загрузки, что нежелательно из-за увеличения времени и сетевых ресурсов. Поэтому правильно подобранные средства и стратегии возобновления загрузки являются ключевыми для достижения поставленной цели.

Основные средства:

  1. OpenSSH SFTP: Утилита, которая предоставляет базовые возможности по управлению файлами на удаленном сервере через протокол SFTP. Она позволяет возобновлять прерванные загрузки с помощью флага -a.

  2. LFTP: Более сложный инструмент, поддерживающий множества протоколов, включая SFTP. Он обладает расширенными возможностями, такими как команда mirror для синхронизации директорий и поддержка шаблонов.

Пример

Предположим, у вас есть директория "00_fastq" на удаленном сервере, содержащая файлы, имена которых начинаются с идентификаторов, таких как "142", "143", и так далее. Вы загрузили часть этих файлов, но потеря соединения прервала процесс. Теперь необходимо возобновить загрузку с файла "144_R1_001.fastq.gz" и продолжить со следующими файлами.

Применение

  1. Использование OpenSSH SFTP:

    OpenSSH позволяет вам использовать команду get с параметром -a, чтобы попытаться заново скачать файлы, которых нет в вашей локальной копии, или продолжить поврежденные загрузки:

    sftp> get -ar 00_fastq

    Эта команда поможет автоматически пропустить уже загруженные файлы и возобновить процесс с места остановки.

  2. Использование LFTP:

    Установка и использование lftp предоставляет более мощные инструменты. lftp поддерживает команду mirror, которая облегчает загрузку только отсутствующих файлов и позволяет делать это в более наглядной и контролируемой форме:

    $ lftp sftp://yourserver.com
    lftp> mirror -v 00_fastq

    У этой команды есть опции, позволяющие создавать зеркальные копии директорий и загружать только недостающие файлы.

  3. Работа с шаблонами:

    Если необходимо выбрать специфический диапазон файлов, lftp поддерживает адресацию по шаблонам:

    lftp> cd 00_fastq
    lftp> lcd local_directory
    lftp> mget 1[4-9]*

    Здесь команда mget используется для загрузки всех файлов, номера которых начинаются с цифры от 4 до 9.

Рекомендации

Для повышения надежности при загрузке и предотвращения потерь данных из-за сбоев соединения, настоятельно рекомендуется использовать терминальные мультиплексоры, такие как tmux или screen. Эти инструменты позволяют запускать сессии, которые могут быть отсоединены и подключены вновь без прерывания текущих операций загрузки. Это особенно полезно в сетях с нестабильной связью.

Пример работы с tmux:

$ tmux new-session -s mysession
$ lftp sftp://yourserver.com
lftp> mirror -v 00_fastq
# Для отсоединения: Ctrl+b, потом d
# Для подключения: tmux attach-session -t mysession

Таким образом, чтобы успешно загрузить файлы из указанной директории с определенного номера файла, указанные стратегии и инструменты, такие как OpenSSH SFTP с опцией auto-resume и расширенные возможности lftp, позволяют достичь желаемого результата, сводя к минимуму повторные загрузки и обеспечивая надежность работы.

Оцените материал
Добавить комментарий

Капча загружается...