У вас там всего три копирования, я бы и цикл делать не стал, но если это ТЗ, то в for проще перечислить for i in 1 2 3 и не делать интератор. Как минимум так быстрее работать будет.
Создание папок mkdir, лучше с ключем -p. При создании или копировании файла папка для него не создается сама, нужно создать заранее.
Права rw только для юзера chmod 600 имя файла.
Когда составляете строку из переменных заключайте их в фигурные скобки, нужно чтобы оболочка знала где имя переменной заканчивается. ${1}. Пути в линукс разделяются слэшем, если поставить два слэша подряд, они читаются как один слэш. По этому ${1}/${2} и так далее. И все это вместе надо заключить в двойные кавычки на случай пробелов в путях.
Максимальное сжатие сейчас, на сколько я знаю, это zstd со словарем, уточните у учителя что он имел ввиду.
По логу можно добавить к каждому действию комментарии типа
echo "bla-bla" >> $log
Можно вообще весь выхлоп скрипта перенаправить в файл. Можно сделать чтоб скрипт перезапускал сам себя с пайпом в tee. Тогда выхлоп будет и на экран и в лог. Если выберете этот вариант напишите, скину готовый кусочек, лень с телефона писать.
Правила хорошего тона:
Добавьте комментарии к действиям, чтоб скрипт был понятнее.
Проверяйте вводимые данные, в вашем случае это позиционные параметры. Проверяйте хотябы их наличие.