Как отправить загрузку SFTP-файла в фоновый режим?

8

Это возможно:

  1. выполнить SFTP команду на удаленном компьютере и загрузить файл ( ssh user@machine, sftp user2@server, get file)
  2. затем отправьте загрузку в фоновый режим, чтобы я мог выключить локальный компьютер
Praweł
источник
Пожалуйста, исправьте меня, если я ошибаюсь: 1) Вы подключены локально на машине A. 2) Вы хотите подключиться через SSH на машине B. 3) В оболочке B вы хотите выполнить удаленную загрузку sftp с машины C. 4 ) Затем вы хотите сделать выключение машины А. Это правильно?
Павлос Г.
А - мой локальный компьютер; Б - удаленный сервер 1; C - удаленный сервер 2; Я хочу напечатать ssh user@Bна моей машине A, а затем sftp user@Cи get some_file.tar.gzна машине B; Итак, я хотел бы sftp скачать файл с C на B и выключить мой компьютер A, оставив работающими удаленные B и C
Praweł

Ответы:

10

Попробуйте screenна машине B, начните загрузку и затем отсоедините:

На машине А:

ssh user@B

На машине Б:

screen
sftp user@C
get some_file.tar.gz
Ctrl-a d
logout

Никогда не пытался, но мог работать.

Изменить: позже войдите в систему и используйте screen -xдля повторного подключения к текущему сеансу. Затем правильно отключите его, чтобы он не потреблял ресурсы сервера.

шутник
источник
оно работает! большое спасибо :) чрезвычайно полезная команда ...
Praweł
и для более забавного экрана на Ubuntu, попробуйте byobu.
Финли
1

Если вам нужна функция «отсоединить» экрана, есть программа «dtach», которая предоставляет только эту функцию.

Райан Томпсон
источник
0

Помещение символа & (амперсанд) за командой запускает его в фоновом режиме. Однако я не знаю, как это сделать после того, как команда уже выполнена, и я не знаю, работает ли это на удаленных машинах.

armornick
источник
&было бы хорошо, но я не знаю ни одного --passwordварианта, который я мог бы пройти через командную строку (поэтому я не могу сделать что-то вроде sftp --password=abc user@server:file.tar.gz &)
Praweł
0

Есть несколько решений этой проблемы.

Один из вариантов - использовать screenкоманду, однако она кажется немного сложной.

Лучший способ, который я нашел, это отправить работу на задний план.

В вашем случае команда будет

scp user@machine:~/filename.ext /tmp &
scp -r user@machine:~/dirname /tmp &
Thecamelcoder
источник