scp-файли та видалення файлів у віддаленому каталозі [закрито]


18

Я unix noob, тож будьте терплячі :-)

У мене є сценарій, який збирає купу файлів на інший сервер.

Припустимо, це z1.foo, z2.foo і т. Д. Що я хочу зробити - це сканувати файли та видалити файли, старші ніж 5 днів, на сервері призначення.

Як безпечно видалити файли з пункту призначення?

Спасибі.


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

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

Відповіді:


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.