sftp получить -r без перезаписи

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

Я часто подключаюсь к базе данных по протоколу sftp и получаю данные с помощью get -r.

Есть ли какой-либо способ пропустить все существующие файлы на моем компьютере? Я пробовал get -r --overwrite, но это не сработало. (Я знаю, что могу установить файлы на режим только для чтения, но хотел бы найти лучший способ).

Это частично возможно с sftp. Используйте get -a -r. Согласно странице man для sftp на ubuntu: http://manpages.ubuntu.com/manpages/artful/man1/sftp.1.html, опция -a пытается продолжить прерванные передачи и перезаписывает файл только в том случае, если в файле есть различия.

Я бы предложил использовать rsync через ssh:

rsync -avz -e ssh --progress user@server:/var/db ~/db

Некоторые дополнительные материалы для чтения:

Нет, это невозможно. Страница man для sftp не упоминает ни одной опции, которая бы это сделала возможным. Вам лучше скопировать файлы в какое-то известное пустое место, а затем скопировать в вашу целевую локацию с помощью

get -r remote_path/ empty_path/
!cp --no-clobber empty_path/ real_target/

Согласно мануалу, вы также можете использовать:

reget -r nameofthefolder destinationfolder

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

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

Как использовать SFTP для скачивания файлов без перезаписи

Работа с SFTP (SSH File Transfer Protocol) для загрузки данных может вызвать некоторые затруднения, особенно когда речь идет о необходимости избежать перезаписи уже существующих файлов на вашем компьютере. В данной статье мы обсудим доступные опции и рекомендуемые решения, чтобы эффективно загружать файлы без лишних проблем.

1. Использование команды get -a -r

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

Для этого выполните следующую команду:

sftp user@server
sftp> get -a -r remote_directory local_directory

2. Переход на rsync

Если вы ищете более удобный способ управления файлами, то можете рассмотреть использование rsync через SSH. Этот инструмент специально создан для синхронизации файлов и каталогов между двумя местоположениями, и он предлагает значительно более гибкие возможности копирования.

Пример команды rsync выглядит следующим образом:

rsync -avz -e ssh --progress user@server:/path/to/remote_directory ~/local_directory

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

3. Альтернативные решения

Если вы по каким-либо причинам не можете использовать rsync, существует еще несколько обходных путей. Например, вы можете сначала скачать файлы во временную директорию, а затем переместить их, используя команду cp с параметром --no-clobber, которая предотвратит перезапись существующих файлов:

sftp user@server
sftp> get -r remote_path/ /path/to/temp_directory/
!cp --no-clobber /path/to/temp_directory/* /path/to/target_directory/

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

4. Использование команды reget

Некоторые пользователи нашли решение с помощью команды reget, которое также поддерживает скачивание файлов. Однако следует быть осторожным, так как эта команда может создать новую папку с таким же именем, и вам потребуется вручную переместить уже загруженные файлы:

sftp user@server
sftp> reget -r nameofthefolder destinationfolder

Заключение

Хотя SFTP не предлагает полной поддержки для загрузки файлов без перезаписи, вы можете использовать комбинированные подходы и разумный выбор инструментов, таких как rsync, чтобы значительно упростить задачу. Учитывая преимущества каждого метода, вы можете выбрать наиболее подходящий для вашей специфической ситуации.

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

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