Есть у меня пара серверов, файлы на которых синхронизируются через не быстрый интернет канал. И надо было периодически удалять на них довольно объемные файлы. Но сложность заключалась в том, что по этому же каналы работали пользователи. И удалив сразу большой объем информации синхронизация файловых систем занимало довольно продолжительное время, в течении которого работа пользователей фактически приостанавливалась.
Можно было конечно расставить приоритеты трафика, или пойти каким либо другим путем, но ведь идти по пути наименьшего сопротивления гораздо проще.
Опытным путем выяснилось, что если удалять по одному файлу раз в пять минут пользователи не замечали фоновой синхронизации файловых систем. Да, можно не спеша, читая баш, или общаясь на форумах, удалять руками файлы. Но ведь проще написать маленький скрипт, автоматизирующий этот процесс.
В моем случае все упрощалось тем, что все файлы, подлежащие удалению, лежали в одной папке и имели вид
- name.part01
- name.part02
- name.part03
- …
- name.partNN
Ну что же, попробуем написать скрипт?
А выглядеть он у нас будет так:
#!/bin/sh ADDR=/{папка, в которой удалять} FID= name.part AMT=1 while [ $AMT -lt 10 ] do echo $ADDR/"$FID"0$AMT.rar rm $ADDR/"$FID"0$AMT.rar date let AMT=AMT+1 sleep 300 done while [ $AMT -lt 100 ] do echo $ADDR/"$FID"$AMT.rar rm $ADDR/"$FID"$AMT.rar date let AMT=AMT+1 sleep 300 done
Где
ADDR – путь к папке, где лежат те файлы, которые предстоит удалить
FID – шаблон имени удаляемых файлов
AMT – счетчик.
P.S. Скрипт используется Вами на свой страх и риск, рекомендую для ознакомления протестировать сначала на тестовых серверах. Претензии не принимаются!
|
Подробнее...