Задать вопрос
Lakika
@Lakika
Sicario

Как поставить пароль на архив tar/gzip?

Здравствуйте!
Подскажите пожалуйста, появилась задача, установить пароль при создании архива с бэкапом.
Сейчас использую просто скрипт на баше, такого вида

mysqldump -u $USER -p$PASS --ignore-table=myBase.log_chat --ignore-table=myBase.log_main --routines $DB > $BACKUP_DIR/mysql.sql
+ tar -czvf $ARCHIVE $BACKUP_DIR
На выходе я получаю .tar.gz архив, и все бы ничего, но как его защитить?
Каким образом можно поставить пароль на архив?
  • Вопрос задан
  • 1839 просмотров
Подписаться 1 Сложный 1 комментарий
Ответ пользователя Saboteur К ответам на вопрос (2)
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
mysqldump -u $USER -p$PASS --ignore-table=myBase.log_chat --ignore-table=myBase.log_main --routines $DB > $BACKUP_DIR/mysql.sql
+ tar -czvf $ARCHIVE $BACKUP_DIR


Странное применение targzip в данном случае. совершенно бессмысленное.
Юзай просто zip, у него есть -e (encrypt) опция, но там слабенькая защита. уж проще openssl, как указали в другом ответе.

Чтоже касается tar. Весь смысл тар и gzip в том, что они умеют работать с потоком, а не файлом. Поэтому то, что вы сперва сохраняете в файл, а потом отдельно еще в tar/gz - бессмысленная работа, которая ничего не дает. Вдобавок и сам тар там не нужен, у вас же один файл.
Поэтому можно сделать так:
mysqldump -u $USER -p$PASS --ignore-table=myBase.log_chat --ignore-table=myBase.log_main --routines $DB | gzip > $BACKUP_DIR/mysql.gz


и потом шифровать файл чем угодно.
Или сразу:
mysqldump -u $USER -p$PASS --ignore-table=myBase.log_chat --ignore-table=myBase.log_main --routines $DB | gzip | openssl enc -aes-256-cbc -out encrypted $BACKUP_DIR/mysql.gz.encrypted

Пароль или руками или перенаправить
mysqldump -u $USER -p$PASS --ignore-table=myBase.log_chat --ignore-table=myBase.log_main --routines $DB | gzip | openssl enc -aes-256-cbc -out encrypted $BACKUP_DIR/mysql.gz.encrypted<<<"mysecretpassword"
Ответ написан
Комментировать