Как удалить файлы с удаленной машины?

Подскажите. У меня происходит синхронизация по rsync. После синхронизации мне надо на удаленной машине, куда была произведена синхронизация, удалить несколько файлов. Их список (с путями) формируется в файле. Как мне из bash скрипта удалить файлы согласно этому списку на удаленной машине?
  • Вопрос задан
  • 583 просмотра
Решения вопроса 1
@Hanneman
Удалять на удаленной из списка на локальной?
P.S. Пишу специально развернуто (строчка за строчкой, без оптимизации кода и команд), чтобы автору понятно было.

filename='/tmp/my.txt'
filelines=`cat $filename`
for line in $filelines ; do
    echo $line
    ssh remote_host_username@remote_hostname_or_ip "rm -rf $line; exit"
done

Между хостами надо настроить авторизацию без пароля (раз уж скриптом собрались делать), чтобы его каждый раз не вводить - читать здесь (пункты "Управление ключами", "Копирование ключа на сервер", "Ключ сервера", или поищите другое руководство по настройке - их миллион в сети). И в этой же статье найдете пункт "Удалённое исполнение кода", если хотите изучить больше, как решается ваша задача.

P.P.S: Само собой, чтобы каждый раз не подключаться по ssh к хосту в итерации (как в моем примере), оптимальнее копировать скриптом локальный файл на удаленный хост командной утилитой scp (в той же статье описание - всего одна строчка команды), потом с локальной тем же скриптом (следующий шаг) удаленно запускать скрипт на удаленной машине, который, читая из скопированного же туда на удаленный хост файла (для него - локального уже) строки, будет стирать файлы локально. Для этого мой скрипт, что приведен выше, нужно модифицировать - добавить пару-другую строк. Но это уже вы сами. Удочка у вас уже в руках - ловите рыбу.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
planc
@planc
https://stackoverflow.com/questions/1521462/loopin...
while read p; do
  echo "$p"
done </путь/к/файлу/мой_файл.txt
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы