Самый быстрый способ резервного копирования файла в 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, где будет еще больше полезной информации.