Я попытался сжать каталог с помощью следующей команды:
gzip -r /home/path/to/backups/mydirectory.gz /home/site/public_html/
Я ожидал увидеть файл .gz внутри ... резервных копий, содержащих все файлы, найденные в ... public_html. Это не то, что случилось. Вместо этого каждый файл был (рекурсивно) переименован в [имя файла] .gz в public_html. Это, очевидно, привело к остановке всего сайта.
Два вопроса: 1) Что я сделал не так с синтаксисом? и 2) Как я могу вернуть все имена файлов к тому, что они были раньше (в точности то, что они есть сейчас, без расширения .gz).
Два вопроса: 1) Что я сделал не так с синтаксисом?
Gzip сжимает только отдельные файлы; это не инструмент для архивирования. Обычно он используется в сочетании с чем-то вроде деготь. Фактически, некоторые версии tar
буду использовать gzip
для автоматического создания сжатого архива при наличии соответствующих флагов. Например:
tar -cvz -f public_html.tar.gz /home/site/public_html/
Это создает (-c
) сжатый с помощью gzip (-z
) архив называется public_html.tar.gz
содержащие содержимое указанного public_html
каталог.
2) Как я могу вернуть все имена файлов к прежним значениям (в точности то, что они есть сейчас, за исключением расширения .gz).
Просто беги gunzip
по всем файлам. Например:
gunzip -r /home/site/public_html/
Обратите внимание, что вы также можете просто использовать zip
команда, которая создаст единый сжатый архив.
gzip не объединяет файлы .. Это не zip. Вам нужно использовать tar с gzip
tar cf file.tar dir
gzip file.tar
или
tar zcf file.tar.gz dir
gzip
является просто компрессор, а не файловый архиватор. Я знаю, это странно, когда ты приезжаешь из мира pkzip
, который делает и то, и другое.
Вы хотите использовать tar
, который выполняет рекурсивное архивирование файлов в один большой файл, который затем можно сжать. Обычно tar запускается из родительского каталога каталога, который нужно заархивировать, примерно так:
tar -cvf archive-name.tar directory-to-store/
Что даст вам несжатый архив. Затем вы можете сжать это с помощью
gzip archive-name.tar
Что даст вам archive-name.tar.gz
.
Если вы используете GNU tar (а вы, вероятно, используете), вы можете объединить их в один шаг, добавив флаг z:
tar -czvf archive-name.tar.gz directory-to-store/
и вы можете распаковать
tar -xzvf archive-name.tar.gz
Фактически, с современными версиями GNU tar нет необходимости -z
для декомпрессии - обнаружит автоматически. Это удобно, потому что GNU tar также поддерживает -j
для (лучше, чем gzip) bzip2
сжатие и (если у вас достаточно новая версия) -J
для еще лучшего xz
сжатие. Обычно файлы, созданные таким образом .tar.bz2
или .tar.xz
Расширения, но тогда раздражает необходимость выбора правильного флага для распаковки, особенно в скриптах.