Сжать полный каталог с помощью bzip2 в файл tar, имя которого зависит от текущей даты

Я пытаюсь сжать каталог, но хочу изменить имя файла tar на текущую дату. Проблема в том, что tar не принимает:

#!/bin/bash
tar -cvjSf $(date +%d/%m/%y.%HH:%MM)home_backup.tar.bz2 /home

Я хочу сделать сжатый файл с bzip2 с фактической датой, но имя не принимается. Это работает, только если я использую простое имя, например:

#!/bin/bash
tar -cvjSf home.tar.bz2 /home

person Igor Aguiar    schedule 25.08.2016    source источник


Ответы (1)


Не добавляйте : или / в имя tar-файла.

Пытаться:

tar -cvjSf "$(date +%d-%m-%y.%HH.%MM)home_backup.tar.bz2" /home

Примечания:

  1. В Unix / означает каталог. Расширение $(date +%d/%m/%y.%HH:%MM)home_backup.tar.bz2 будет содержать два /, и tar захочет создать файл в указанном подкаталоге. В приведенной выше команде мы заменили / на -, и проблемы удалось избежать.

  2. tar рассматривает часть имени файла, предшествующую :, как имя удаленного хоста. Поскольку вы не пытаетесь отправить файл на удаленный хост, все : следует удалить из команды date, которая используется для создания имени файла. В приведенной выше команде мы заменили : на ., и проблемы удалось избежать.

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

person John1024    schedule 25.08.2016