Назад | Перейти на главную страницу

scp файлы и удалить файлы в удаленном каталоге

Я новичок в UNIX, так что наберитесь терпения :-)

У меня есть сценарий, который отправляет кучу файлов на другой сервер.

Предположим, это z1.foo, z2.foo и т. Д. Я хочу сделать файлы scp и удалить файлы старше 5 дней на целевом сервере.

Как безопасно удалить файлы из места назначения?

Спасибо.

Чтобы удалить файлы в неинтерактивном режиме:

ssh hostname "rm -f z100.foo z200.foo"

Вы можете выполнить обе задачи в одной команде, используя --delete флаг rsync.

> ls -1 localdir/
a.foo
b.foo

> ssh remote-host "ls -1 remotedir/"
c.foo

> rsync -a --delete localdir/ remote-host:remotedir/

> ssh remote-host "ls -1 remotedir/"
a.foo
b.foo

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

> man rysnc
...
--delete                delete extraneous files from dest dirs
--delete-before         receiver deletes before transfer (default)
--delete-during         receiver deletes during xfer, not before
--delete-after          receiver deletes after transfer, not before
--delete-excluded       also delete excluded files from dest dirs

На странице руководства также есть это предупреждение:

Эта опция может быть опасна при неправильном использовании! Это очень хорошая идея - сначала запустить, используя --dry-run option (-n), чтобы увидеть, какие файлы будут удалены, чтобы убедиться, что важные файлы не указаны в списке.

Если вы хотите указать имя пользователя и номер порта, вы можете сделать следующее:

ssh root@203.0.113.123 -p22 "rm -rf /home/amzad/test.php"