---------Переменные окружения:--------------------------
Просмотр значения переменной окружения
printenv <имя_переменной без $>
Установка переменных среды:
export SOMETHING_ENV="Product number one!"
--------Проверка существования строки:------------------
#!/bin/bash
PATTERN=$1
FILE=$2
if grep -q $PATTERN $FILE;
then
echo "Here are the Strings with the Pattern '$PATTERN':"
echo -e "$(grep $PATTERN $FILE)\n"
else
echo "Error: The Pattern '$PATTERN' was NOT Found in '$FILE'"
echo "Exiting..."
exit 0
fi
----
grep -q 'PATTERN' 'FILE' || echo "Error : The Pattern Does Not Exist";
---------------Очистка архивных логов:-----------------
sudo find /var/log -type f -name "*.gz" -delete
----------------Вывод даты в имя файла:----------------
#!/bin/bash
mv $fold_loc_www $fold_loc_dir/www_`date +%Y%m%d%H%M%S`
-----------------Проверка существования файла:---------
#!/bin/bash
if test -f "$fold_loc_www/wp-config_local.php"; then
rm $fold_loc_www/wp-config.php
cp $fold_loc_www/wp-config_local.php $fold_loc_www/wp-config.php
echo "> config files exchange successfully!"
else
echo "Error: Файл конфига wp-config_local.php не существует!"
fi
--------------------Спрашиваем о готовности к продолжению:--------------------
#0) Спрашиваем о готовности запуска:
read -p ">> Импорт сайта на локальную ~1.100 сервер. ДА/НЕТ? [y]es/[n]o : " AMSURE
[ "$AMSURE" = "y" ] || exit
echo ""
----------------Копирование папки за исключением некоторой папки внутри:-------
rsync -r --exclude='wp-content/uploads' www/ buckups/bkp1
----------------2-й способ:----------------
SRC=~/work/soruce; DEST=~/work/test; REGEXP=js; pushd $SRC;
for I in $(find ./ | grep -v "$REGEXP"); do if [ -d $I ];
then mkdir $DEST/$I;
else cp $I $DEST/$I;
fi;
done;
popd 2>/dev/null
-----------------------------Копирование файлов кроме некоторых:----------------
Для текущей директории:
ls $1 | grep -v file1 | xargs cp $1 destination/$1
-----rename all images in folder with prefix of datetime from exif data-------
for i in `ls` ;
do
date=$(identify -format %[exif:DateTime] $i);
date=${date//:/-};
date=${date// /_};
mv $i ${date}__$i;
done
------------Создает тестовые картинки:----------------------
for i in {1..100};
do
convert -background lightblue -fill blue -size 100x100 -pointsize 34 -gravity center label:$i $i.jpg;
done
------------------------Ищет файлы с </script декларациями:--------------
grep -r "<script" | grep -v src | awk -F: '{print $1}' | uniq
-------------Convert PDF to jpg:-------------------------------------------
for file in *.pdf;
do
convert
-verbose
-colorspace RGB
-resize 800
-interlace none
-density 300
-quality 80 "$file" "${file//.pdf/.jpg}";
done
-----------Daily backup and clear olds - simple script---------------------------
##!/bin/bash
#Daily backup script
#Create some needed variable
day=$(date +%F)
Folder="/home/ME/"
File="/media/MediaTwo/Copy/UbuntuBackup/$day.tar.gz"
# Backup Server Configuration
tar cpzf $File $Folder
# Remove backup files older than 90 days
find $File* -mtime +90 -exec rm {} \;
----------------Logging script result:-------------------------
sudo sh ./myscript.sh >mylog.txt 2>&1
-----------HEX view file:--------------
od -bc ~/mail.ru.txt | less
---------------ZIP file----------------
[export from db]| gzip -c > SomeFile.gz
-------Работа в кроне и репорт ошибок на мейл:--------------------
59 23 * * * root erlog=`/root/scripts/backup_hosts_logs.sh 2>&1`;
if ! $erlog; then echo $erlog | mail -s "SERVER Buckup subsystem - was some error" user@domain.com; fi
---------------Execute script on ssh connection:------------------
ssh root@192.168.1.1 'bash -s' < local_script.sh
-----------BACKUP ON LINE:----------------------------------------
Условимся также, что диск-источник - hda, диск-приемник - hdb.
Вариант 1: диски идентичные, времени навалом.
Копируем диск целиком:
# dd if=/dev/hda of=/dev/hdb
Преимущества: копия диска "один в один". Не требуется устанавливать загрузчик, необходимо лишь сменить имя компьютера и IP-адрес.
Недостатки: копируются ВЕСЬ диск-источник, вместе с пустым местом (то есть, если на 40-гигабайтном диске занят всего 1 гигабайт, копироваться все равно будет 40 гигабайт). Немного сэкономить время поможет установка параметра bs в число, кратное размеру буфера диска.
Вариант 2: все остальные сочетания условий.
Копируем только полезные данные:
1. С помощью fdisk разбиваем диск-приемник.
2. Форматируем созданные разделы.
3. Монтируем эти разделы в соответствующие подкаталоги в /mnt.
4. По очереди переходим в каталоги, куда смонтированы разделы диска-источника и даем следующую команду:
# find . -xdev | cpio -pvdm /mnt/<каталог-приемник>
5. Даем команду chroot /mnt/<корневой_каталог_диска-приемника>
6. Устанавливаем загрузчик (командой lilo или grub-install)
7. Изменяем имя и IP-адрес машины-клона.
Преимущества: заметная экономия времени (даже при выполнении всех этапов вручную).
Недостатки: к таковым условно можно причислить сложность и многоэтапность процедуры, но это легко преодолевается помещением всех необходимых команд в скрипт. При этом вместо интерактивной утилиты fdisk можно использовать его неинтерактивного коллегу cfdisk.
-------------TWO-WAY SYNC FOLDER---------------
#!/bin/sh
LOCALDIR='/home/user1/some-folder/'
REMOTEDIR='/home/user-remote/some-folder/'
if /sbin/route -n | /bin/grep -q '^192.168.1.0 '
then
SERVER='work@192.168.1.99
else
SERVER='work@99.99.99.99'
fi
echo 'Syncing with $SERVER'
echo 'Sending...';
rsync -e 'ssh -p 15555' -rltzu --delete --progress $LOCALDIR $SERVER:$REMOTEDIR
echo 'Fetching...';
rsync -e 'ssh -p 15555' -rltzu --delete --progress $SERVER:$REMOTEDIR $LOCALDIR
echo 'Syncing Ready!!!';
## Ограничением является то что нужно работать с конкретным файлом только "на одной стороне синхронизации"
--------------------------
Просмотр значения переменной окружения
printenv <имя_переменной без $>
Установка переменных среды:
export SOMETHING_ENV="Product number one!"
--------Проверка существования строки:------------------
#!/bin/bash
PATTERN=$1
FILE=$2
if grep -q $PATTERN $FILE;
then
echo "Here are the Strings with the Pattern '$PATTERN':"
echo -e "$(grep $PATTERN $FILE)\n"
else
echo "Error: The Pattern '$PATTERN' was NOT Found in '$FILE'"
echo "Exiting..."
exit 0
fi
----
grep -q 'PATTERN' 'FILE' || echo "Error : The Pattern Does Not Exist";
---------------Очистка архивных логов:-----------------
sudo find /var/log -type f -name "*.gz" -delete
----------------Вывод даты в имя файла:----------------
#!/bin/bash
mv $fold_loc_www $fold_loc_dir/www_`date +%Y%m%d%H%M%S`
-----------------Проверка существования файла:---------
#!/bin/bash
if test -f "$fold_loc_www/wp-config_local.php"; then
rm $fold_loc_www/wp-config.php
cp $fold_loc_www/wp-config_local.php $fold_loc_www/wp-config.php
echo "> config files exchange successfully!"
else
echo "Error: Файл конфига wp-config_local.php не существует!"
fi
--------------------Спрашиваем о готовности к продолжению:--------------------
#0) Спрашиваем о готовности запуска:
read -p ">> Импорт сайта на локальную ~1.100 сервер. ДА/НЕТ? [y]es/[n]o : " AMSURE
[ "$AMSURE" = "y" ] || exit
echo ""
----------------Копирование папки за исключением некоторой папки внутри:-------
rsync -r --exclude='wp-content/uploads' www/ buckups/bkp1
----------------2-й способ:----------------
SRC=~/work/soruce; DEST=~/work/test; REGEXP=js; pushd $SRC;
for I in $(find ./ | grep -v "$REGEXP"); do if [ -d $I ];
then mkdir $DEST/$I;
else cp $I $DEST/$I;
fi;
done;
popd 2>/dev/null
-----------------------------Копирование файлов кроме некоторых:----------------
Для текущей директории:
ls $1 | grep -v file1 | xargs cp $1 destination/$1
-----rename all images in folder with prefix of datetime from exif data-------
for i in `ls` ;
do
date=$(identify -format %[exif:DateTime] $i);
date=${date//:/-};
date=${date// /_};
mv $i ${date}__$i;
done
------------Создает тестовые картинки:----------------------
for i in {1..100};
do
convert -background lightblue -fill blue -size 100x100 -pointsize 34 -gravity center label:$i $i.jpg;
done
------------------------Ищет файлы с </script декларациями:--------------
grep -r "<script" | grep -v src | awk -F: '{print $1}' | uniq
-------------Convert PDF to jpg:-------------------------------------------
for file in *.pdf;
do
convert
-verbose
-colorspace RGB
-resize 800
-interlace none
-density 300
-quality 80 "$file" "${file//.pdf/.jpg}";
done
-----------Daily backup and clear olds - simple script---------------------------
##!/bin/bash
#Daily backup script
#Create some needed variable
day=$(date +%F)
Folder="/home/ME/"
File="/media/MediaTwo/Copy/UbuntuBackup/$day.tar.gz"
# Backup Server Configuration
tar cpzf $File $Folder
# Remove backup files older than 90 days
find $File* -mtime +90 -exec rm {} \;
----------------Logging script result:-------------------------
sudo sh ./myscript.sh >mylog.txt 2>&1
-----------HEX view file:--------------
od -bc ~/mail.ru.txt | less
---------------ZIP file----------------
[export from db]| gzip -c > SomeFile.gz
-------Работа в кроне и репорт ошибок на мейл:--------------------
59 23 * * * root erlog=`/root/scripts/backup_hosts_logs.sh 2>&1`;
if ! $erlog; then echo $erlog | mail -s "SERVER Buckup subsystem - was some error" user@domain.com; fi
---------------Execute script on ssh connection:------------------
ssh root@192.168.1.1 'bash -s' < local_script.sh
-----------BACKUP ON LINE:----------------------------------------
Условимся также, что диск-источник - hda, диск-приемник - hdb.
Вариант 1: диски идентичные, времени навалом.
Копируем диск целиком:
# dd if=/dev/hda of=/dev/hdb
Преимущества: копия диска "один в один". Не требуется устанавливать загрузчик, необходимо лишь сменить имя компьютера и IP-адрес.
Недостатки: копируются ВЕСЬ диск-источник, вместе с пустым местом (то есть, если на 40-гигабайтном диске занят всего 1 гигабайт, копироваться все равно будет 40 гигабайт). Немного сэкономить время поможет установка параметра bs в число, кратное размеру буфера диска.
Вариант 2: все остальные сочетания условий.
Копируем только полезные данные:
1. С помощью fdisk разбиваем диск-приемник.
2. Форматируем созданные разделы.
3. Монтируем эти разделы в соответствующие подкаталоги в /mnt.
4. По очереди переходим в каталоги, куда смонтированы разделы диска-источника и даем следующую команду:
# find . -xdev | cpio -pvdm /mnt/<каталог-приемник>
5. Даем команду chroot /mnt/<корневой_каталог_диска-приемника>
6. Устанавливаем загрузчик (командой lilo или grub-install)
7. Изменяем имя и IP-адрес машины-клона.
Преимущества: заметная экономия времени (даже при выполнении всех этапов вручную).
Недостатки: к таковым условно можно причислить сложность и многоэтапность процедуры, но это легко преодолевается помещением всех необходимых команд в скрипт. При этом вместо интерактивной утилиты fdisk можно использовать его неинтерактивного коллегу cfdisk.
-------------TWO-WAY SYNC FOLDER---------------
#!/bin/sh
LOCALDIR='/home/user1/some-folder/'
REMOTEDIR='/home/user-remote/some-folder/'
if /sbin/route -n | /bin/grep -q '^192.168.1.0 '
then
SERVER='work@192.168.1.99
else
SERVER='work@99.99.99.99'
fi
echo 'Syncing with $SERVER'
echo 'Sending...';
rsync -e 'ssh -p 15555' -rltzu --delete --progress $LOCALDIR $SERVER:$REMOTEDIR
echo 'Fetching...';
rsync -e 'ssh -p 15555' -rltzu --delete --progress $SERVER:$REMOTEDIR $LOCALDIR
echo 'Syncing Ready!!!';
## Ограничением является то что нужно работать с конкретным файлом только "на одной стороне синхронизации"
--------------------------
Комментариев нет :
Отправить комментарий
Благодарю за ваше участие!