Я постоянно на флешке таскаю много мелких файлов, т.е. документов. Так как флешка может пойти по рукам, не хотелось бы, чтоб эти документы кто-то видел. Ну и еще проблема - всегда забываешь бросить какую-нибудь мелочь, а держать флешку постоянно включенной не хочется.
Вот и решил убить двух зайцев - написал скрипт, который архивирует определённую папку на компе, шифрует архив (при желании), пишет на флешку. Ну и соответственно делает обратные действия: чистит папку на компе и восстанавливает в неё содержимое архива. Получилась своеобразная синхронизация. Может, кому пригодится.
Как пользоваться:
Прописать в скрипте (в начале) нужные пути, пароль и т.д. (всё откомментировал) Первый параметр определяет, что будем делать - читать или писать на флешку (у меня "f" (from) - читать, "t" (to) - писать), второй - если есть, архив будет зашифрован.
Например: ./fl f c - прочитает зашифрованный архив, ./fl f - прочитает обычный архив.
Далее вешаем это дело на кнопку или на панель, и пользуемся.
#!/bin/bash
# Бэкап данных на флеш
# -------------------------------------------------------------------
sourcedir='/home/ploop/files/flbcp' # Исходная папка
tempdir='/tmp' # Временные файлы
datafilename='flbcp' # Имя файла на носителе
flashmount='/media' # Куда монтируется флешка
flashname='ploop_flash' # Имя носителя ("метка тома")
toflash='t' # Ключ для копирования на флеш
fromflash='f' # Ключ для копирования с флеш
crypt='c' # Ключ, если нужно шифрование
password='test' # Пароль для шифрования
# -------------------------------------------------------------------
fulflashname=$flashmount'/'$flashname
# Проверка параметров
if [[ -z $1 ]]
then
echo ' Параметры не заданы!'
exit 1
fi
if [[ $1 != $fromflash ]] && [[ $1 != $toflash ]]
then
echo ' Параметры заданы неверно!'
exit 1
fi
# Проверка доступности файлов
if ! [[ -d $sourcedir ]]
then
echo ' Исходный каталог на компьютере отсутствует!'
exit 1
fi
if ! [[ -d $fulflashname ]]
then
echo ' Flash не примонтирована, либо имеет непонятное имя!'
exit 1
fi
if [[ $1 = $toflash ]]
then
# Копируем данные на флеш
rm -rf $tempdir'/flbcp' 2>/dev/null
mkdir $tempdir'/flbcp' 2>/dev/null
echo ' Копирование файлов во временную папку...'
cp -R $sourcedir $tempdir'/flbcp/'
cd $tempdir'/flbcp/'
echo ' Создание архива...'
tar -cjf 'q6nHjk0Nm3a5dfwCmq3Jop0bJ45de' *
# Имя архива от балды, лиш бы не было совпадения с sourcedir
if [[ $2 = $crypt ]]
then
echo ' Шифрование файла...'
echo $password | gpg --passphrase-fd 0 --no-tty -c 'q6nHjk0Nm3a5dfwCmq3Jop0bJ45de'
cp 'q6nHjk0Nm3a5dfwCmq3Jop0bJ45de.gpg' 'q6nHjk0Nm3a5dfwCmq3Jop0bJ45de'
fi
echo ' Копирование архива на носитель...'
cp 'q6nHjk0Nm3a5dfwCmq3Jop0bJ45de' $fulflashname'/'$datafilename
echo ' Удаление временных файлов...'
rm -rf $tempdir'/flbcp' 2>/dev/null
echo ' OK'
exit 0
fi
if [[ $1 = $fromflash ]]
then
# Читаем данные с носителя
# Предварительно проверим, есть ли там файл
if ! [[ -f $fulflashname'/'$datafilename ]]
then
echo ' Файл не найден на носителе!'
exit 1
fi
# Копируем во временную директорию
# предварительно очистив её
mkdir $tempdir'/flbcp' 2>/dev/null
echo ' Копирование данных с носителя...'
cd $tempdir'/flbcp/'
rm -rf *
cp $fulflashname'/'$datafilename $tempdir'/flbcp/q6nHjk0Nm3a5dfwCmq3Jop0bJ45de-'
if [[ $2 = $crypt ]]
then
echo ' Расшифровка файла...'
echo $password | gpg --no-tty --passphrase-fd 0 -q -o 'q6nHjk0Nm3a5dfwCmq3Jop0bJ45de' 'q6nHjk0Nm3a5dfwCmq3Jop0bJ45de-' 2>/dev/null
fi
echo ' Распаковка файла...'
if tar -xjf 'q6nHjk0Nm3a5dfwCmq3Jop0bJ45de' 2>/dev/null
then
echo ' Очистка директории назначения...'
cd $sourcedir'/'
rm -rf *
echo ' Копирование файлов...'
cp -R $tempdir'/flbcp/'$(basename $sourcedir) $(dirname $sourcedir)
echo ' Удаление временных файлов...'
rm -rf $tempdir'/flbcp' 2>/dev/null
echo ' OK'
exit 0
else
echo ' Распаковка завершилась неудачно!'
echo ' возможно файл зашифрован или повреждён'
exit 1
fi
fi