Скрипт для удаления файлов с использованием SSH

У меня есть скрипт, который использует scp для резервного копирования некоторых файлов моего ПК на другой ПК, подключенный к локальной сети, что-то вроде этого:

#!/bin/bash
scp some_directories host@ip-address:backupFolder/

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

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

Так что мне нужен способ удалить файлы с удаленного ПК с помощью какого-нибудь скрипта. Единственный известный мне способ - войти в систему с помощью ssh host@ip, а затем использовать rm, но, очевидно, я не могу написать такой скрипт:

#!/bin/bash
ssh host@ip-address
rm -r backupFolder/

, потому что таким образом команда rm ищите резервную копию папки на моем компьютере, а не на удаленной.

0
задан 5 June 2013 в 14:11

3 ответа

Ваше описание немного расплывчато. Но я считаю, что вы хотите заархивировать это синхронизировать папку удаленного резервного копирования с вашим ПК (синхронизировать каталоги).

В этом случае наиболее подходящим инструментом будет rsync вместо scp.

Хорошая новость заключается в том, что rsync отлично работает над SSH, ваша аутентификация с открытым ключом будет работать как чудо.

Вы можете использовать команду, подобную приведенной ниже, чтобы синхронизировать резервную копию на удаленном сервере с вашим ПК.

rsync -avz --delete --progress --stats some_directories host@ip-address:backupFolder/

ПРИМЕЧАНИЕ. : будьте осторожны с обратной косой чертой rsync => /. Прочитайте справочные страницы.

0
ответ дан 5 June 2013 в 14:11

Просто добавьте команду, которую хотите запустить удаленно.

ssh user@ip-address rm -r backupFolder/

Запускает одну команду на удаленном компьютере. Страница man клиента SSH сообщает вам такой синтаксис:

SYNOPSIS
     ssh [-1246AaCfgKkMNnqsTtVvXxYy] ...more options... [user@]hostname [command]

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

0
ответ дан 5 June 2013 в 14:11

Либо у вас может быть сценарий, использующий

ssh host@ip-address << EOF
`rm foo`
exit
EOF

, либо вы можете направлять команды в ssh, используя серьезные акценты в терминале, минуя необходимость написания сценария вообще. Например:

ssh host@ip-address:folder `rm foo`

Источник: http://www.unix.com/302265172-post2.html

0
ответ дан 5 June 2013 в 14:11

Другие вопросы по тегам:

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