Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по Linux » Redhat/Fedora - Помогите написать скрипт на Bash

Ответить
Настройки темы
Redhat/Fedora - Помогите написать скрипт на Bash

Новый участник


Сообщения: 24
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: VORONUK
Дата: 22-03-2013
Доброе время суток.

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

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

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

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

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

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

Спасибо.

Отправлено: 14:08, 22-03-2013

 

Забанен


Сообщения: 6158
Благодарности: 1300

Профиль | Цитировать


Примерно такую команду в 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 {} \;
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:56, 22-03-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 24
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 15:33, 25-03-2013 | #3


Забанен


Сообщения: 6158
Благодарности: 1300

Профиль | Цитировать


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

Отправлено: 19:58, 25-03-2013 | #4


Новый участник


Сообщения: 24
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

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

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

Отправлено: 17:16, 18-09-2013 | #5


Забанен


Сообщения: 6158
Благодарности: 1300

Профиль | Цитировать


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

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

Отправлено: 17:55, 18-09-2013 | #6


Аватара для ruslandh

info man howto


Moderator


Сообщения: 6949
Благодарности: 383

Профиль | Сайт | Отправить PM | Цитировать


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

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

http://sysadmins.ru/topic296860.html

-------
Поспешай не торопясь

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:56, 18-09-2013 | #7



Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по Linux » Redhat/Fedora - Помогите написать скрипт на Bash

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - Помогите написать скрипт на последовательеый запуск команд peterm Скриптовые языки администрирования Windows 8 10-11-2012 23:31
[решено] Помогите написать скрипт на авто установку специализированной программы организации Timerlan-87 AutoIt 11 02-03-2012 17:10
VBA - Помогите пожалуйста написать скрипт на VBA Большой Кол Программирование и базы данных 6 22-10-2009 22:49
FreeBSD - Помогите написать скрипт Stirs Общий по FreeBSD 2 25-06-2008 02:29
FreeBSD - Помогите написать скрипт для резервного копирования на основе команды CP NickNick Общий по FreeBSD 3 02-06-2008 13:30




 
Переход