Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по Linux (http://forum.oszone.net/forumdisplay.php?f=9)
-   -   Помогите написать скрипт на Bash (http://forum.oszone.net/showthread.php?t=256858)

VORONUK 22-03-2013 14:08 2116272

Помогите написать скрипт на Bash
 
Доброе время суток.

Помогите пожалуйста написать скрипт на Bash"е.

Установленна samba, Fedora 17. Путь к розшаренной папке /home/backup/dostup . В доступе, папки созданы таким образом, что есть:
- папка для всех юзеров
- отдел
- фамилия

Скрипт будет запускаться с /opt

Надо сделать так, что бы скрипт копировал файлы которым больше двух недель в /home/backup/old_dostup_files), а потом удалял файлы и папки, внутри папки "- фамилия". Ходил по отделам и чистил. Само дерево папок, удалять нельзя. Отделов больше 10-ти, фамилий больше 100 (фамилии удалять нельзя).

Для того, что бы не засорять локальный файлообменник.

Если у кого-то, есть какие-то ссылочки, на почти готовое, буду только рад. Попробую методом тыка допилить ))

Спасибо.

vadblm 22-03-2013 19:56 2116512

Примерно такую команду в cron раз в сутки:
find /home/backup/dostup -mtime +14 -exec /bin/mv {} /home/backup/old_dostup_files/ \;

Все файлы, изменявшиеся давнее 14 дней будут перемещены в /home/backup/old_dostup_files/ без сохранения относительного пути. Пустые директории также не трогаются, вам надо будет придумать, как их удалять, сделав исключение, чтобы удалялись только папки, которые юзеры сами накропали у себя в шарах.
Без этого условия удаление пустых папок также просто:
find /home/backup/dostup -type d -empty -exec rmdir {} \;

VORONUK 25-03-2013 15:33 2118138

Спасибо большое... Всего лишь одна строчка )))) А я ма :))) Срочно учить баш :))

vadblm 25-03-2013 19:58 2118348

Цитата:

Цитата VORONUK
Всего лишь одна строчка )))) А я ма )) Срочно учить баш ) »

Ну это не баш, а одна команда - find. Она мощная. ;)
Да и не сделает всё по уму, пустые папки останутся. Тут вам придумывать, как решать. Можно в корне юзера сделать неудаляемый файл типа .noremove и chattr +i его. Можно покрутить права и в find их учитывать.

VORONUK 18-09-2013 17:16 2219915

Всё бы ничего, но... )))
Чуть не подошел вариант. Т.к. пользователи переписывают файлы и папки, с разной датой. Получается что: удаляется всё, что старше 14-ти дней (да, всё удаляется правильно). Удаляет чуть не то, а именно: папка и файлы были созданы (например) 2 месяца назад, в доступ их выложили вчера, а оно его потёрло. И понятно почему, т.к. старше 14-ти дней.

Можно ли как-то выбрать что-то типа даты записи в шару, потом что бы команда искала какие файлы и папки (можно просто файлы), были созданы , сохраняла в файл, и потом другая команда удаляла это всё дело, можно просто файлы.

Или я не от туда начинаю? или не правильно представляю?

vadblm 18-09-2013 17:55 2219938

Цитата:

Цитата VORONUK
Чуть не подошел вариант. Т.к. пользователи переписывают файлы и папки, с разной датой. Получается что: удаляется всё, что старше 14-ти дней (да, всё удаляется правильно). Удаляет чуть не то, а именно: папка и файлы были созданы (например) 2 месяца назад, в доступ их выложили вчера, а оно его потёрло. И понятно почему, т.к. старше 14-ти дней. »

Ищите в таком случае по ctime, а не mtime. Правда, гарантированно работать это будет только в случае, если "выложить" значит переместить на другую файловую систему. Ну и если используется самба, может она меняет ctime сама, я сейчас затрудняюсь сказать точно. Впрочем, это легко проверить, ls -lc "свежевыложенный" файл, какую покажет дату.

Инфа для размышления http://www.linux-faqs.info/general/d...time-and-atime

ruslandh 18-09-2013 19:56 2220009

На всякий случай имеется три опции времяни:
-atime - время от последнего обращения (доступа) к файлу
-ctime - время от последнего изминения статуса файла
-mtime - время последней модификации файлов.

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

http://sysadmins.ru/topic296860.html


Время: 18:03.

Время: 18:03.
© OSzone.net 2001-