Вопрос или проблема
Я пытаюсь скачать файлы с удаленного сервера на свой. Они все находятся в директории с именем.
-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, наиболее важными аспектами являются надежность и эффективность передачи данных. Потеря соединения во время загрузки файлов может привести к необходимости повторной загрузки, что нежелательно из-за увеличения времени и сетевых ресурсов. Поэтому правильно подобранные средства и стратегии возобновления загрузки являются ключевыми для достижения поставленной цели.
Основные средства:
-
OpenSSH SFTP: Утилита, которая предоставляет базовые возможности по управлению файлами на удаленном сервере через протокол SFTP. Она позволяет возобновлять прерванные загрузки с помощью флага
-a
. -
LFTP: Более сложный инструмент, поддерживающий множества протоколов, включая SFTP. Он обладает расширенными возможностями, такими как команда
mirror
для синхронизации директорий и поддержка шаблонов.
Пример
Предположим, у вас есть директория "00_fastq" на удаленном сервере, содержащая файлы, имена которых начинаются с идентификаторов, таких как "142", "143", и так далее. Вы загрузили часть этих файлов, но потеря соединения прервала процесс. Теперь необходимо возобновить загрузку с файла "144_R1_001.fastq.gz" и продолжить со следующими файлами.
Применение
-
Использование OpenSSH SFTP:
OpenSSH позволяет вам использовать команду
get
с параметром-a
, чтобы попытаться заново скачать файлы, которых нет в вашей локальной копии, или продолжить поврежденные загрузки:sftp> get -ar 00_fastq
Эта команда поможет автоматически пропустить уже загруженные файлы и возобновить процесс с места остановки.
-
Использование LFTP:
Установка и использование
lftp
предоставляет более мощные инструменты.lftp
поддерживает командуmirror
, которая облегчает загрузку только отсутствующих файлов и позволяет делать это в более наглядной и контролируемой форме:$ lftp sftp://yourserver.com lftp> mirror -v 00_fastq
У этой команды есть опции, позволяющие создавать зеркальные копии директорий и загружать только недостающие файлы.
-
Работа с шаблонами:
Если необходимо выбрать специфический диапазон файлов,
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, позволяют достичь желаемого результата, сводя к минимуму повторные загрузки и обеспечивая надежность работы.