#!/bin/bash
# Скрипт-сценарий copy_to_flash
# Помещается в папку ~/.config/caja/scripts/
#Проверка выбранных позиций
if [[ "$@" = "" ]];then
zenity --info --text="Ничего не выбрано....\nкопирование остановлено."
exit 0;
fi
#Проверка количества примонтированных флэшек.
flashmounted=`mount | grep vfat | wc -l`
if [ $flashmounted = 0 ]; then
zenity --warning --text="Нет примонтированных флэшек"
exit
fi
#Выбор каталога для копирования
save_dir=$(zenity --file-selection --directory --title="Выберите папку для сохранения");
if [[ "$?" != 0 ]];then
zenity --info --text="Каталог не выбран...\nкопирование остановлено."
exit 0;
fi
#Определение общего размера файлов для копирования
size_all=0
for name in "$@"
do
size_name=$(du "$name" | grep -v '/' | cut -f 1)
size_all=$(($size_all+$size_name))
done
size_progress=0 # Размер скопированных файлов
percent_fn=0 # Процент скопированного размера
timestarts=$(date +%s)
#Функция копирования
copyfunc ()
{
timecurs=$(date +%s)
percent_fn=$(echo "100*$size_progress/$size_all" | bc)
etas=$(echo "($size_all-$size_progress)*($timecurs-$timestarts)/$size_progress" | bc)
eta=$(date --date=@$etas -u +%H:%M:%S)
echo $percent_fn
echo "# Копирую $fn \nв \n$save_dir/$name \n ------- $percent_fn% ------- \nОсталось времени: $eta"
if [ -d "$fn" ]
then
find "$fn" | sort | while read F ; do cp --parents "$F" "$save_dir"/ ; done
else
cp "$fn" "$save_dir"/"$name"
fi
aplay /usr/share/sounds/linuxmint-gdm.wav
timecurs=$(date +%s)
size_fn=$(du "$fn" | grep -v "$fn/" | cut -f 1)
size_progress=$(($size_progress+$size_fn))
}
#Если выбраны папки, копируем все объекты из этих папок
for name in "$@"
do
if [ -d "$name" ]
then
mkdir "$save_dir"/"$name"
{ for fn in "$name"/*
do
copyfunc
echo $size_progress >tmp
done } | zenity --progress --auto-close
size_progress=$(cat tmp)
rm tmp
fi
done
#Если выбраны файлы, копируем эти файлы
{ for name in "$@"
do
if [ -f "$name" ]
then
fn="$name"
copyfunc
fi
done } | zenity --progress --auto-close
#Финальный аккорд
#aplay ~/motion/drama.wav
zenity --info --text="Копирование закончено"
Скрыть