June 2

Самый быстрый способ резервного копирования файла в Bash (вероятно, вы им не пользуетесь)

Это перевод оригинальной статьи The Fastest Way to Back Up a File in Bash (You’re Probably Not Using It).

Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.

При работе в терминале создание резервной копии файла перед редактированием — это привычка, которая экономит время, нервы, а иногда и целые системы. В Bash есть приём, который делает это почти незаметным:

cp filename{,.bak}

Как это работает

Эта команда основана на расширении фигурных скобок — функции оболочки, которая генерирует несколько строк из одного шаблона.

filename{,.bak}

разворачивается в:

filename filename.bak

Таким образом, Bash фактически выполняет следующее:

cp filename filename.bak

Вы вводите имя файла один раз, а Bash сделает все остальное.

Почему это лучше, чем «обычный» способ

Большинство людей пишут:

cp filename filename.bak

Это работает, но расширение фигурных скобок имеет свои преимущества:

  • Быстрый ввод
  • Меньше ошибок, особенно с длинными именами файлов.
  • Более чистые команды
  • Упрощает чтение скриптов и истории терминала.

После привыкания, возвращаться к прежнему будет тяжело.

Примеры из практики

Перед редактированием конфигурационного файла:

cp nginx.conf{,.bak}

Перед изменением скрипта:

cp deploy.sh{,.bak}

Нужно откатить изменения?

mv filename.bak filename

Мгновенная отмена.

Полезные варианты

Разный суффикс:

cp file{,.old}
cp file{,.backup}

Резервная копия с отметкой времени:

cp file{,.$(date +%F)}

Результат:

file.2025-12-15

Интерактивный режим (запрашивает подтверждение перед перезаписью):

cp -i filename{,.bak}

Важные примечания

  • Работает в Bash, Zsh и большинстве современных оболочек.
  • Не работает в обычной оболочке sh (POSIX shell).
  • Перезаписывает существующие файлы .bak, если не используется -i.

Почему это важно

Это маленький приём, но он формирует более безопасный рабочий процесс:

  • Резервное копирование становится автоматическим
  • Вы чаще будете их делать
  • Ошибки обратимы

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

Заключительная мысль

Если вы ежедневно работаете в терминале, эта однострочная команда должна стать частью вашей мышечной памяти:

cp filename{,.bak}

Маленькая команда. Большая отдача.

На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.