scp файлы и удаление файлов в удаленном каталоге [закрыто]


18

Я Unix Noob, поэтому, пожалуйста, будьте терпеливы :-)

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

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

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

Благодарю.


"перезаписать файлы в месте назначения"? Если вы scp файлы, которые уже существуют на удаленном каталоге, они будут автоматически перезаписаны
Aki

Хорошая идея - удалять файлы локально с помощью сценария оболочки. Это значит, что вы SCPing-файлы, когда захотите. но есть сценарий оболочки , который работает на ежедневной основе , чтобы удалить файлы в определенную папку, где вы держать files.command будет что - то вроде:find /path/to/files* -mtime +5 -exec rm {} \;
Заре Каспарян

Ответы:


21

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

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

1
что такое имя хоста? это так servername@ipaddress:path/to/dir/?
HattrickNZ

1
имя хоста просто user:password@ipaddressили user:password@dnsnameили вы можете опустить пароль, если не требуется. Я только попробовал это с, root@somednsnameи это прекрасно работает. path/to/dirЧасть я положил в команде ет, как абсолютный путь, чтобы убедиться , что это правильно.
AsGoodAsItGets

6

Вы можете выполнить обе задачи в одной команде, используя --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

Страница man также содержит это предупреждение:

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


2

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

ssh root@203.0.113.123 -p22 "rm -rf /home/amzad/test.php"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.