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

Как удалить файлы на сервере, не поддерживающем SSH. Только sFTP

Итак, я могу сделать это: sftp user @ server

Это файлы https://gist.github.com/438a6b82aff3064a19c9

мне нужно удалить файлы старше 60 дней.

Есть ли способ автоматизировать это?

Команда find не работает. удаление по шаблону не работает.

Rsync поддерживается. Как это делается с помощью rsync?

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

Это очень некрасиво, но работает:

для i в 60 999; do lftp sftp: // user @ host -c "rm / path / to / website_production _ $ (date -d" $ i days ago "+% m-% d-% Y) *" done

Возможно, вы захотите настроить его так, чтобы вам не приходилось вводить пароль.

Смонтируйте папку sftp в своей системе, если вы используете OS X, вы можете использовать Transmit для этого или Linux (в данном случае Ubuntu), вы можете использовать это руководство http://blog.damontimm.com/how-to-mount-a-sftp-folder-ssh-ftp-on-ubuntu-linux-using-sshfs-fuse/ .

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

Rsync защищает дату создания. Таким образом, вы можете синхронизировать все файлы на свой компьютер. Тогда беги find чтобы выбрать файлы старше 60 дней и удалить их. И загрузите их обратно через rsync. Или просто удалите их в месте назначения.

РЕДАКТИРОВАТЬ

Результат проверки rsync в локальных каталогах:

rsync -av input/ tmp/
find tmp/* -mtime +10 -exec rm {} \;
rsync --delete -av tmp/ input

После этого каталог ./input/ удаляется из файлов, измененных более 10 дней назад. Это должно быть применимо к удаленному каталогу через SFTP.