LINUX.ORG.RU

Покритикуйте скрипт для архивации и шифрования

 , , ,


1

1

Хочу загружать много данных в недоверенное объектное хранилище.

#! /bin/bash

find -name "* *" -type d | rename 's/ /_/g'
find -name "* *" -type f | rename 's/ /_/g'

for file in *
do
    sumout="$(echo -n $file | sha1sum)"
    name="${sumout: : -3}"
    tar c $file | gpg -r my@email --cipher-algo AES256 --compress-algo none --encrypt -o $name.tar.gpg 
    echo $name $file >> sha1names.txt
    rm -rf $file
done

sha256sum *.gpg > sha256sums.txt

Скрипт должен убрать пробелы из имен, переименовать (скрыть реальные имена), архивировать и зашифровать. Вроде, со своей задачей справляется.

Если кто-то подскажет, как распараллелить, то буду благодарен.

UPD: не давайте, пожалуйста, советы по поводу бекапов. У меня есть нормальный сервер с доступом по ssh и borg делает бекапы со всех машин раз в час. Задача этого скрипта несколько иная - выгружзить сотни гигабайт медиа файлов в убогий Google Drive и забыть о них.

★★★★★

Последнее исправление: aquadon (всего исправлений: 1)

Если кто-то подскажет, как распараллелить, то буду благодарен.

Основная идея - использование команды xargs

seq 0 1000 | xargs -P10 -I{} bash -c "sleep 1; echo {}"

Вместо «seq 0 1000» - любой многострочный текстовый вывод, каждая строка потом подставляется вместо {} в xargs

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от ism

7z использовал раньше, через gpg удобнее - не нужно вводить пароли.

aquadon ★★★★★
() автор топика
Ответ на: комментарий от anonymous8

Для нормальных бекапов на нормальный сервер у меня есть borg, здесь несколько иная задача.

aquadon ★★★★★
() автор топика

А зачем ты сначала удаляешь пробелы из имён файлов, а потом меняешь имя на хеш?

Ну и потом по твоему списку sha1names.txt разве удобно будет назад возвращать файлам имена?

Не проще ли сначала файлы tar'ить, а потом переименовывать и шифровать уже архивы? Таким образом внутри архивов файлы останутся с оригинальными именами, но без gpg-ключа никто их не узнает.

shell-script ★★★★★
()
Ответ на: комментарий от shell-script

Таким образом внутри архивов файлы останутся с оригинальными именами, но без gpg-ключа никто их не узнает.

Не знаю как у ТСа, но иногда имена файлов не особо секретные, но зато легко без расшифровки знать какие файлы нужно перенести назад из бекап хранилища для восстановления

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Ну карту имён вполне себе можно оставить, как у ТС. Просто, имхо, проще из архива доставать файл сразу с нормальным именем, а не сначала распаковывать, а потом переименовывать.

shell-script ★★★★★
()
Ответ на: комментарий от aquadon

Как раз duplicity и предназначен для бэкапов на недоверенное хранилище. Duplicity может паковать, шифровать GPG и скрывать имена файлов, но при этом у тебя остается возможность нормально расшифровать и восстановить имена файлов.

Просто ты пишешь велосипед, когда уже есть отлаженный инструмент именно для таких задач.

А ещё он умеет сам загружать на кучу облачных хранилищ.

anonymous8 ★★
()
Последнее исправление: anonymous8 (всего исправлений: 1)
Ответ на: комментарий от shell-script

А зачем ты сначала удаляешь пробелы из имён файлов, а потом меняешь имя на хеш?

Пробелы убираю дабы избежать ошибок при выполнении дальнейших команд (bash толком не знаю). Имена хочу скрыть.

Не проще ли сначала файлы tar'ить, а потом переименовывать и шифровать уже архивы? Таким образом внутри архивов файлы останутся с оригинальными именами, но без gpg-ключа никто их не узнает.

Да, так будет лучше, спасибо.

aquadon ★★★★★
() автор топика
Ответ на: комментарий от vertexua

Не хочу светить имена файлов.

aquadon ★★★★★
() автор топика
Ответ на: комментарий от anonymous8

Спасибо, почитаю документацию к нему.

aquadon ★★★★★
() автор топика

Коды возврата проверяй

quester ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.