Переместить несколько файлов из одного каталога в другой на удаленном сервере sftp - PullRequest
0 голосов
/ 02 июля 2018

Я подключаюсь к своему удаленному sftp, используя следующую команду:

sftp user@host

После ввода пароля я получаю приглашение sftp, т.е.

sftp>

Моя задача - переместить несколько файлов из каталога A в каталог B. Я могу сделать это с помощью команды переименования, но только один файл за один раз. Существует ли какая-либо команда / синтаксис, которая может перемещать список файлов из каталога A в каталог B. Примерно так:

rename /A/file1 /A/file2 B/

Просто чтобы добавить, я должен сделать это только через командную строку, используя протокол sftp, а не какой-либо инструмент, такой как fileZilla или winscp.

Ответы [ 3 ]

0 голосов
/ 02 июля 2018

Должен ли это быть sftp?

Вы можете выдавать команды в виде скрипта блока напрямую через ssh.

ssh user@host '
    echo "Moving files"
    date
    rename /A/file1 /A/file2 B/
    date
' > logfile 2>&1
0 голосов
/ 03 июля 2018

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

Наиболее широко используемой версией протокола SFTP является Версия 3, черновик 02 . Примечательно, что это версия, реализованная OpenSSH, которая является наиболее широко используемым программным обеспечением SFTP-сервера. Эта версия протокола не упоминает подстановочные знаки, и команда для переименования файла переименовывает один файл или каталог из старого имени в новое имя.

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

0 голосов
/ 02 июля 2018

Нет команды mv, использующей sftp. Как вы сказали, единственным решением является использование rename.


В качестве обходного пути в терминале вы можете использовать ftputil в Python. Имеет функцию переименования:

rename(source, target)

Переименовывает исходный файл (или каталог) на FTP-сервере.

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

...