Главная » Шкатулка » Admin&komp » Linux |
Linux [33] | admin [10] | железко [1] | spam [1] |
25.09.2014, 11:41 | |
Цель: создать архив файлопомойки на сервере.
Метод решения: создать скрипт, который архивирует каждую папку в расшаренной в отдельный архив, а все файлы, которые не размещены в папки, в один отдельный архив. Папка "Пользователи" будет архивироваться отдельным скриптом по тому же принципу: 1папка=1архив, остальное - 1архив-файлов
И запускать эти скрипты по расписанию с помощью крона
1) Скрипт для архивации каждой папки в отдельный архив:
find /share -mindepth 1 -maxdepth 1 -type d -exec /bin/sh -c 'tar -czf"/backup/`basename "{}"`.tar.gz" "{}"' \;
find ... -exec команда, которая ищет (find) данные заданные параметрами и затем отправляет(-exec) эти данные на обработку.
В данном примере: ищем все папки и обрабатываем их с помощью программы bash (sh -c) выполнив команду: tar -czf"/backup/`basename "{}"`.tar.gz" "{}"' В этой второй половине команды basename - это переменная, для нашего примера - это имена папок. Фигурные скобки нужны, чтоб учесть имена с пробелами - мне так кажется, это пока не ясная для меня комбинация, и последнее \; - это необходимая комбинация для корректной работы. Опять же предполагаю - это означает конец команды для обработки (это либо для sh, либо для exec)
2) Скрипт для архивирования всего, но кроме папок, в архив (архив файлов)
find /share -mindepth 1 -maxdepth 1 -type d>/backup/list.dir|tar -czvf"/backup/files.tar.gz" /share -X /backup/list.dir
Формируем список с именами папок - find /share -mindepth 1 -maxdepth 1 -type d>/backup/list.dir, а затем формируем архив, но исключаем (-X) из архива папки.
3) Далее комбинируем эти команды в один общий скрипт и этот скрипт прописываем в крон
#!/bin/bash ##1часть сначала папка "Пользователи" find /share/Пользователи -mindepth 1 -maxdepth 1 -type d -exec /bin/sh -c 'tar -czf"/backup/users/`basename "{}"`.tar.gz" "{}"' \; find /share/Пользователи -mindepth 1 -maxdepth 1 -type d>/backup/users.dir|tar -czvf"/backup/files.tar.gz" /share -X /backup/users.dir ##2часть - остальное find /share -mindepth 1 -maxdepth 1 -type d>/backup/list.dir|tar -czvf"/backup/files.tar.gz" /share -X /backup/list.dir find /share -mindepth 1 -maxdepth 1 -type d -exec /bin/sh -c 'tar -czf"/backup/users/`basename "{}"`.tar.gz " "{}" --exclude="/share/Пользователи"' \; --------------------------------------------------------------------------------------------------------------- Дополнительная информация: DATE=`date +%Y.%m.%d-%H.%M` дата в виде: год.месяц.день-час.минуты
вывод только каталогов 1) ls -F ./ | grep / 2) find ./ -maxdepth 1 -type d ====== miniman cron sudo tar -cvzf"/arh/`date +%x`-arh.tar.gz" /myfolder -X /arh/unList-iskluchenie.txt date +%x Команды cron Формат команд cron(8) аналогичен стандарту V7 и является совместимым с ним. Каждая стока в системном состоит из шести полей и команды: минута час число месяц день_недели пользователь команда Каждая стока в пользовательском состоит из пяти полей и команды: минута час число месяц день_недели команда Поля отделяются друг от друга пробелами или символами табуляции. Команда может состоять из нескольких полей. Допустимые значения полей: поле EDITOR=nano crontab -e # использовать для запуска команд /bin/sh
| |
Просмотров: 480 | Рейтинг: 0.0/0 |