воскресенье, 28 октября 2012 г.

Скрипт копирования файлов по размеру и расширению

Полезен, для быстрого сохранения необходимой информации, перед фарматированием носителя. Например, если нужно вылечить компьютер от вирусов, прежде чем ставить виндовс.
#!/bin/bash

#                                                                                          #
##                                                                                      ##
### Идея автоматического копирования файлов ###
### на внешнее хранилище. Работа польностью  ###
### должна быть автоматизирована! По завер-    ###
### шению копирования, скрипт сохранит            ###
### логи, в которых будет понятно чего и              ###
### сколько было скопировано, общее количе-     ###
### ство файлов, общий размер, время начала     ###
### и завершения работы, потраченное время.     ###
##                                                                                       ##
#                                                                                           #

# Запись в лог. Время запуска копирования.
touch $OUT/backupUSB.txt
echo " Start `date`" >> $OUT/backupUSB.txt
sleep 1
DISPLAY=:0 notify-send -t 59000 "backup.sh" "Start `date`"

# переменные директорий (для простоты что либо изменить)
# Исходная папка
echo "Введите адрес откуда копировать, начиная с / "
read IN
# Конечный результат
echo "Введите адрес куда копировать, начиная с / "
read OUT

# Создать директорию. Запись в лог в корне директории.
mkdir -p $OUT/$(date +%Y.%m.%d)
# Создать директоии для изображений по расширениям
mkdir -p $OUT/$(date +%Y.%m.%d)/Picture/jpeg
mkdir -p $OUT/$(date +%Y.%m.%d)/Picture/cr2
mkdir -p $OUT/$(date +%Y.%m.%d)/Picture/gif
mkdir -p $OUT/$(date +%Y.%m.%d)/Picture/tiff
# Создать директории для документов по расширениям
mkdir -p $OUT/$(date +%Y.%m.%d)/Document/doc
mkdir -p $OUT/$(date +%Y.%m.%d)/Document/xls
mkdir -p $OUT/$(date +%Y.%m.%d)/Document/ppt
mkdir -p $OUT/$(date +%Y.%m.%d)/Document/txt
mkdir -p $OUT/$(date +%Y.%m.%d)/Document/rtf
mkdir -p $OUT/$(date +%Y.%m.%d)/Document/pdf
mkdir -p $OUT/$(date +%Y.%m.%d)/Document/djvi
# Создать директрии для кротких видеороликов
mkdir -p $OUT/$(date +%Y.%m.%d)/min_move/avi
mkdir -p $OUT/$(date +%Y.%m.%d)/min_move/mp4
mkdir -p $OUT/$(date +%Y.%m.%d)/min_move/wmv
mkdir -p $OUT/$(date +%Y.%m.%d)/min_move/3gp
# Создать директрии для фильмов
mkdir -p $OUT/$(date +%Y.%m.%d)/full_move/avi
mkdir -p $OUT/$(date +%Y.%m.%d)/full_move/mp4
mkdir -p $OUT/$(date +%Y.%m.%d)/full_move/wmv
mkdir -p $OUT/$(date +%Y.%m.%d)/full_move/mkv
mkdir -p $OUT/$(date +%Y.%m.%d)/full_move/mpeg
mkdir -p $OUT/$(date +%Y.%m.%d)/full_move/mpeg4
# Создать директрии для музыки
mkdir -p $OUT/$(date +%Y.%m.%d)/music/mp3
# Создать директрии для программ \ игр
mkdir -p $OUT/$(date +%Y.%m.%d)/games/exe
# Создать директрии для телефона \ смартфона
mkdir -p $OUT/$(date +%Y.%m.%d)/mobile/jar
# Создать директрии для образов дисков
mkdir -p $OUT/$(date +%Y.%m.%d)/obraz/iso

echo "Папка создана $OUT/$(date +%Y.%m.%d)" >> $OUT/backupUSB.txt
echo "Все директории созданы" >> $OUT/backupUSB.txt

# Подсчет файлов по расширениям.
echo "jpeg `find $IN -iname *.jpeg -print | wc -l`" >> $OUT/backupUSB.txt
echo "jpg  `find $IN -iname *.jpg  -print | wc -l`" >> $OUT/backupUSB.txt
echo "cr2  `find $IN -iname *.cr2  -print | wc -l`" >> $OUT/backupUSB.txt
echo "gif  `find $IN -iname *.gif  -print | wc -l`" >> $OUT/backupUSB.txt
echo "tiff `find $IN -iname *.tiff -print | wc -l`" >> $OUT/backupUSB.txt
echo "txt  `find $IN -iname *.txt  -print | wc -l`" >> $OUT/backupUSB.txt
echo "doc  `find $IN -iname *.doc  -print | wc -l`" >> $OUT/backupUSB.txt
echo "docx `find $IN -iname *.docx -print | wc -l`" >> $OUT/backupUSB.txt
echo "xls  `find $IN -iname *.xls  -print | wc -l`" >> $OUT/backupUSB.txt
echo "pdf  `find $IN -iname *.pdf  -print | wc -l`" >> $OUT/backupUSB.txt
echo "exe  `find $IN -iname *.exe  -print | wc -l`" >> $OUT/backupUSB.txt
echo "iso  `find $IN -iname *.iso  -print | wc -l`" >> $OUT/backupUSB.txt
echo "jar  `find $IN -iname *.jar  -print | wc -l`" >> $OUT/backupUSB.txt
echo "sis  `find $IN -iname *.sis  -print | wc -l`" >> $OUT/backupUSB.txt
echo "flac `find $IN -iname *.flac -print | wc -l`" >> $OUT/backupUSB.txt
echo "mp3  `find $IN -iname *.mp3  -print | wc -l`" >> $OUT/backupUSB.txt
echo "wmv  `find $IN -iname *.wmv  -print | wc -l`" >> $OUT/backupUSB.txt
echo "3gp  `find $IN -iname *.3gp  -print | wc -l`" >> $OUT/backupUSB.txt
echo "mkv  `find $IN -iname *.mkv  -print | wc -l`" >> $OUT/backupUSB.txt
echo "mp4  `find $IN -iname *.mp4  -print | wc -l`" >> $OUT/backupUSB.txt
echo "avi  `find $IN -iname *.avi  -print | wc -l`" >> $OUT/backupUSB.txt

echo "Подсчет иходных файлов в $IN выполнен успешно" >> $OUT/backupUSB.txt

# Начать копирование по раширениям и размеру.

find $IN -iname "*.jpeg" -size +30k -exec cp {} $OUT/$(date +%Y.%m.%d)/Picture/jpeg \;
find $IN -iname "*.jpg" -size +30k -exec cp {} $OUT/$(date +%Y.%m.%d)/Picture/jpeg \;
find $IN -iname "*.cr2" -size +30k -exec cp {} $OUT/$(date +%Y.%m.%d)/Picture/cr2 \;
find $IN -iname "*.raw" -size +30k -exec cp {} $OUT/$(date +%Y.%m.%d)/Picture/cr2 \;
find $IN -iname "*.gif" -size +30k -exec cp {} $OUT/$(date +%Y.%m.%d)/Picture/gif \;
find $IN -iname "*.tiff" -size +30k -exec cp {} $OUT/$(date +%Y.%m.%d)/Picture/tiff \;

find $IN -iname "*.doc" -exec cp {} $OUT/$(date +%Y.%m.%d)/Document/doc \;
find $IN -iname "*.docx" -exec cp {} $OUT/$(date +%Y.%m.%d)/Document/doc \;
find $IN -iname "*.xls" -exec cp {} $OUT/$(date +%Y.%m.%d)/Document/xls \;
find $IN -iname "*.ppt" -exec cp {} $OUT/$(date +%Y.%m.%d)/Document/ppt \;
find $IN -iname "*.txt" -exec cp {} $OUT/$(date +%Y.%m.%d)/Document/txt \;
find $IN -iname "*.rtf" -exec cp {} $OUT/$(date +%Y.%m.%d)/Document/rtf \;
find $IN -iname "*.pdf" -exec cp {} $OUT/$(date +%Y.%m.%d)/Document/pdf \;
find $IN -iname "*.djvi" -exec cp {} $OUT/$(date +%Y.%m.%d)/Document/djvi \;

find $IN -iname "*.avi" -size -599M -exec cp {} $OUT/$(date +%Y.%m.%d)/min_move/avi \;
find $IN -iname "*.mp4" -size -599M -exec cp {} $OUT/$(date +%Y.%m.%d)/min_move/mp4 \;
find $IN -iname "*.wmv" -size -599M -exec cp {} $OUT/$(date +%Y.%m.%d)/min_move/wmv \;
find $IN -iname "*.3gp" -size -599M -exec cp {} $OUT/$(date +%Y.%m.%d)/min_move/3gp \;

find $IN -iname "*.avi" -exec cp {} $OUT/$(date +%Y.%m.%d)/full_move/avi \;
find $IN -iname "*.mp4" -exec cp {} $OUT/$(date +%Y.%m.%d)/full_move/mp4 \;
find $IN -iname "*.wmv" -exec cp {} $OUT/$(date +%Y.%m.%d)/full_move/wmv \;
find $IN -iname "*.mkv" -exec cp {} $OUT/$(date +%Y.%m.%d)/full_move/mkv \;
find $IN -iname "*.mpeg" -exec cp {} $OUT/$(date +%Y.%m.%d)/full_move/mpeg \;
find $IN -iname "*.mpeg4" -exec cp {} $OUT/$(date +%Y.%m.%d)/full_move/mpeg4 \;

find $IN -iname "*.mp3" -exec cp {} $OUT/$(date +%Y.%m.%d)/music/mp3 \;
find $IN -iname "*.exe" -exec cp {} $OUT/$(date +%Y.%m.%d)/games/exe \;
find $IN -iname "*.msi" -exec cp {} $OUT/$(date +%Y.%m.%d)/games/exe \;
find $IN -iname "*.7z" -exec cp {} $OUT/$(date +%Y.%m.%d)/games/exe \;
find $IN -iname "*.rar" -exec cp {} $OUT/$(date +%Y.%m.%d)/games/exe \;
find $IN -iname "*.zip" -exec cp {} $OUT/$(date +%Y.%m.%d)/games/exe \;
find $IN -iname "*.jar" -exec cp {} $OUT/$(date +%Y.%m.%d)/mobile/jar \;
find $IN -iname "*.sis" -exec cp {} $OUT/$(date +%Y.%m.%d)/mobile/jar \;
find $IN -iname "*.iso" -exec cp {} $OUT/$(date +%Y.%m.%d)/obraz/iso \;
find $IN -iname "*.mdf" -exec cp {} $OUT/$(date +%Y.%m.%d)/obraz/iso \;

echo "Копирование успешно завершено" >> $OUT/backupUSB.txt

# Подсчет общего размера скопированных данных.

echo "Copy file -- `find $OUT/$(date +%Y.%m.%d) -type f -print | wc -l`" >> $OUT/backupUSB.txt
echo "Size dir -- `du -sh $OUT/$(date +%Y.%m.%d)`" >> $OUT/backupUSB.txt

# Время завершения работы скрипта.
echo "Stop `date`" >> $OUT/backupUSB.txt
DISPLAY=:0 notify-send -t 59000 "Copy file -- `find $OUT/$(date +%Y.%m.%d) -type f -print | wc -l` & Size dir -- `du -sh $OUT/$(date +%Y.%m.%d)`"

Комментариев нет:

Отправить комментарий

h265.sh

#!/bin/bash file="../mp4" if [ -d $file ]; then         echo "  Директория существует :-) "         for i in *.mp4; do f...