psychologic
@psychologic
Делаю вид что я системный администратор)

Что делает этот скрипт?

На работе старый админ, любил писать скрипты без комментариев. Я в Linux системе ноль, от силы могу поставить,установить программы и все. Хотелось бы узнать конечно её получше, подскажите и если возможно объясните, что делает данный скрипт? Заранее спасибо.
spoiler
#!/bin/bash
/bin/mount -a;
echo > /var/log/backup_rsync_all
DATE=`date +%Y-%m-%d`
#/bin/date;
#echo "it"           && /usr/bin/rsync -a --force --delete --exclude '#recycle' --exclude '*.db'                         /mnt/datastore1/it/                 /mnt/datastore2/it/                   && /bin/date
#echo "base1C"       && /usr/bin/rsync -a --force --delete --exclude '#recycle' --exclude '*.db'                         /mnt/datastore1/base1C/             /mnt/datastore2/base1C/               && /bin/date
#echo "obmen"        && /usr/bin/rsync -a --force --delete --exclude '#recycle' --exclude '*.db' --exclude 'Buh_scan'    /mnt/datastore1/obmen/              /mnt/datastore2/obmen/                && /bin/date
#echo "help"         && /usr/bin/rsync -a --force --delete --exclude '#recycle' --exclude '*.db'                         /mnt/datastore1/help_information/   /mnt/datastore2/help_information/     && /bin/date
#echo "public"       && /usr/bin/rsync -a --force --delete --exclude '#recycle' --exclude '*.db'                         /mnt/datastore1/public/             /mnt/datastore2/public/               && /bin/date
#echo "workgroups"   && /usr/bin/rsync -a --force --delete --exclude '#recycle' --exclude '*.db' --exclude 'OLD'         /mnt/datastore1/workgroups/         /mnt/datastore2/workgroups/               && /bin/date
#echo "gte10"
#/usr/bin/rsync -a --force --delete --exclude '*.db'  '/mnt/gte10/D/Фотобаза/!Фотобаза/Алексей/' '/mnt/datastore1/workgroups/Отдел Рекламы/Сервер/Алексей'
#/usr/bin/rsync -a --force --delete --exclude '*.db'  '/mnt/gte10/D/Анастасия/' '/mnt/datastore1/workgroups/Отдел Рекламы/Сервер/Анастасия'
#/usr/bin/rsync -a --force --delete --exclude '*.db'  '/mnt/gte10/D/Паспорта/' '/mnt/datastore1/workgroups/Отдел Рекламы/Сервер/Паспорта'
#/usr/bin/rsync -a --force --delete --exclude '*.db'  '/mnt/gte10/D/Рабочая РЕКЛАМА/Графика/Упаковка/Маркировка_Соловьев/' '/mnt/datastore1/workgroups/Отдел Рекламы/Сервер/Маркировка_Соловьев'
#/usr/bin/rsync -rv /mnt/datastore2/workgroups         /mnt/datastore1/
#echo "server10"
#/bin/date


/usr/bin/rsync -a --force --delete-before --exclude='*Thumbs.db' /mnt/server10/                    /mnt/datastore1/backup/windows/server10/latest/
/usr/bin/ssh -i /root/ds1 root@172.16.0.249 "/bin/cp -al /volume1/backup/windows/server10/latest/ /volume1/backup/windows/server10/$DATE"

/usr/bin/rsync -a --force --delete-before --exclude '#recycle' --exclude '*.db' --exclude '#versions' --exclude 'OLD'      /mnt/datastore1/workgroups/         /mnt/datastore2/workgroups/
/usr/bin/rsync -a --force --delete-before --exclude '#recycle' --exclude '*.db' --exclude '#versions' /mnt/datastore1/base1C/ /mnt/datastore2/base1C/
/usr/bin/rsync -a --force --delete-before --exclude '#recycle' --exclude '*.db' --exclude '#versions' /mnt/datastore1/help_information/ /mnt/datastore2/help_information/
/usr/bin/rsync -a --force --delete-before --exclude '#recycle' --exclude '*.db' --exclude '#versions' /mnt/datastore1/obmen/ /mnt/datastore2/obmen/

IFS='
'

for file in `/bin/cat /var/log/backup_rsync_all | grep mkstemp | awk -F"\"" '{ print $2 } ' | sed 's/\.[^.]*$//;s;/\.;/;'`;do
    file_source=`echo $file | sed 's/datastore2/datastore1/'`
    /bin/cp -f "$file_source" "$file"
done


/usr/bin/ssh -i /root/ds2 root@172.16.0.248 "/usr/local/bin/versions.sh"

#echo "/mnt/datastore2/workgroups"
#/bin/date
#/usr/bin/rsync -a --force --delete --exclude='*/#recycle/*' --exclude='*/1100/*' --exclude='*/750/*' --exclude='*/Ульянов А. В/*' --exclude='*Thumbs.db' /mnt/datastore1/workgroups         /mnt/datastore2/
#echo "gte111000"
#/usr/bin/rsync -a --force --delete --exclude '*.db' --exclude '$RECYCLE.BIN' --exclude 'System Volume Information' --exclude 'Анастасия' --exclude 'Фотобаза/!Фотобаза/Алексей' --exclude 'Рабочая РЕКЛАМА/Графика/Упаковка/Маркировка_Соловьев' --exclude 'Паспорта' /mnt/gte10/D/ /mnt/datastore1/workgroups/Отдел\ Рекламы/Server/
#/bin/date
#/usr/bin/rsync -a --force --delete --exclude='*/#recycle/*' --exclude='*Thumbs.db' /mnt/gte10/D/* /mnt/datastore2/workgroups/Отдел\ Рекламы/Ульянов\ А.\ В/
#echo "/mnt/datastore1/profs"
#/bin/date
#/usr/bin/rsync -a --delete-after /mnt/datastore1/profs              /mnt/datastore2/

Первый абзац, как я понял отвечать за хранение логов. Но далее пошёл набор команд, в которых черт ногу сломит.
  • Вопрос задан
  • 319 просмотров
Решения вопроса 2
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
man rsync
и почитайте что каждый параметр означает

Тут из /var/log/backup_rsync_all берет директории для копирования, подменяет часть пути на datastore1 и выполняет копирование
for file in `/bin/cat /var/log/backup_rsync_all | grep mkstemp | awk -F"\"" '{ print $2 } ' | sed 's/\.[^.]*$//;s;/\.;/;'`;do
    file_source=`echo $file | sed 's/datastore2/datastore1/'`
    /bin/cp -f "$file_source" "$file"
done


Тут выполнение некоего файла /usr/local/bin/versions.sh на удаленном хосте 172.16.0.248
/usr/bin/ssh -i /root/ds2 root@172.16.0.248 "/usr/local/bin/versions.sh"


В основном - все остальные перечисленные команды - команды копирования и синхронизации бекапов с небольшими вариациями
Ответ написан
@AlexeyKolodchenko
Читает /etc/fstab и монтирует все, что там прописано
/bin/mount -a;
Записывает пустую строку в файл /var/log/backup_rsync_all
echo > /var/log/backup_rsync_all
Формат даты для записи в логи
DATE=`date +%Y-%m-%d`

________________
Этот блок не исполняется
#/bin/date;
#echo "it" && /usr/bin/rsync -a --force --delete --exclude '#recycle' --exclude '*.db' /mnt/datastore1/it/ /mnt/datastore2/it/ && /bin/date
#echo "base1C" && /usr/bin/rsync -a --force --delete --exclude '#recycle' --exclude '*.db' /mnt/datastore1/base1C/ /mnt/datastore2/base1C/ && /bin/date
#echo "obmen" && /usr/bin/rsync -a --force --delete --exclude '#recycle' --exclude '*.db' --exclude 'Buh_scan' /mnt/datastore1/obmen/ /mnt/datastore2/obmen/ && /bin/date
#echo "help" && /usr/bin/rsync -a --force --delete --exclude '#recycle' --exclude '*.db' /mnt/datastore1/help_information/ /mnt/datastore2/help_information/ && /bin/date
#echo "public" && /usr/bin/rsync -a --force --delete --exclude '#recycle' --exclude '*.db' /mnt/datastore1/public/ /mnt/datastore2/public/ && /bin/date
#echo "workgroups" && /usr/bin/rsync -a --force --delete --exclude '#recycle' --exclude '*.db' --exclude 'OLD' /mnt/datastore1/workgroups/ /mnt/datastore2/workgroups/ && /bin/date
#echo "gte10"
#/usr/bin/rsync -a --force --delete --exclude '*.db' '/mnt/gte10/D/Фотобаза/!Фотобаза/Алексей/' '/mnt/datastore1/workgroups/Отдел Рекламы/Сервер/Алексей'
#/usr/bin/rsync -a --force --delete --exclude '*.db' '/mnt/gte10/D/Анастасия/' '/mnt/datastore1/workgroups/Отдел Рекламы/Сервер/Анастасия'
#/usr/bin/rsync -a --force --delete --exclude '*.db' '/mnt/gte10/D/Паспорта/' '/mnt/datastore1/workgroups/Отдел Рекламы/Сервер/Паспорта'
#/usr/bin/rsync -a --force --delete --exclude '*.db' '/mnt/gte10/D/Рабочая РЕКЛАМА/Графика/Упаковка/Маркировка_Соловьев/' '/mnt/datastore1/workgroups/Отдел Рекламы/Сервер/Маркировка_Соловьев'
#/usr/bin/rsync -rv /mnt/datastore2/workgroups /mnt/datastore1/
#echo "server10"
#/bin/date
_____________________________________________________________________________
Более подробно посмотрите ключи команды rsync ( Не помню )
Синхронизация двух каталогов с исключение виндовых баз Thumbs.db
/usr/bin/rsync -a --force --delete-before --exclude='*Thumbs.db' /mnt/server10/ /mnt/datastore1/backup/windows/server10/latest/

Копирование на удаленном сервере рекурсивно каталоги и создавать жесткие ссылки в каталог с датой копирования
/usr/bin/ssh -i /root/ds1 root@172.16.0.249 "/bin/cp -al /volume1/backup/windows/server10/latest/ /volume1/backup/windows/server10/$DATE"

Синхронизация - смотрите ключи....
/usr/bin/rsync -a --force --delete-before --exclude '#recycle' --exclude '*.db' --exclude '#versions' --exclude 'OLD' /mnt/datastore1/workgroups/ /mnt/datastore2/workgroups/
/usr/bin/rsync -a --force --delete-before --exclude '#recycle' --exclude '*.db' --exclude '#versions' /mnt/datastore1/base1C/ /mnt/datastore2/base1C/
/usr/bin/rsync -a --force --delete-before --exclude '#recycle' --exclude '*.db' --exclude '#versions' /mnt/datastore1/help_information/ /mnt/datastore2/help_information/
/usr/bin/rsync -a --force --delete-before --exclude '#recycle' --exclude '*.db' --exclude '#versions' /mnt/datastore1/obmen/ /mnt/datastore2/obmen/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы