Приветствую Вас, Гость! Регистрация RSS

Мой сайт

Воскресенье, 10.11.2024
Главная » Шкатулка » Admin&komp » Linux

Linux [33] admin [10] железко [1] spam [1]

ls tar etc
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 и является совместимым с ним. Каждая стока в системном состоит из шести полей и команды:

    минута час число месяц день_недели пользователь команда

Каждая стока в пользовательском состоит из пяти полей и команды:

    минута час число месяц день_недели команда

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

поле
    допустимые значение
----- --------------
минута
    * или 0-59
час
    * или 0-23
число
    * или 1-31
месяц
    *, 1-12 или имя месяца (см. ниже)
день-недели
    *, 0-7 или имя дня (воскресенье - это 0 и 7)
пользователь
    имя существующего пользователя
команда
    строка

EDITOR=nano crontab -e

# использовать для запуска команд /bin/sh
# не обращая внимание на то, что написано в /etc/passwd
SHELL=/bin/sh
# отправлять вывод выполнения команд по электронной почте пользователю `paul'
# не обращая внимания на то, чей это crontab
MAILTO=paul
#
# запускать пять минут пополуночи, каждый день
5 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# запускать в 14:15 первого числа каждого месяца
15 14 1 * *     $HOME/bin/monthly
# запускать в 22.00 каждый рабочий день, назло Джо
0 22 * * 1-5    mail -s "Уже 10 вечера" joe%Joe,%%Где твои дети?%
23 0-23/2 * * * echo "запуск в 00:23, 2:23, 4:23 ..., каждый день"
5 4 * * sun     echo "запуск в 4:05 каждое воскресенье"

 

Добавил: adminprg | | Теги: ls tar etc
Просмотров: 480 | Рейтинг: 0.0/0