В предыдущей статье я рассказал как сделать резервную копию базы данных сайта (или любой другой базы данных на движке MySQL). А в этой расскажу как сохранить каталог (папку) самого сайта, другими словами шаблонов, настроек и всего того, что составляет сайт, но не является его наполнением (наполнение содержится в базе данных).
В общем перейдём к делу. В этой затее мне потребуется старый добрый архиватор tar, который в общем-то входит в каждый дистрибутив Linux и обычно у хостинг-провайдеров он доступен. Для своей затеи я использовал такую конструкцию:
tar czf <name.tar.gz> <name_dir>
Сделаю ещё одно небольшое отвлечение: на самом деле я использовал здесь не просто архиватор tar, а симбиоз двух архиваторов tar и gzip. Последний тоже очень распространён и скорее всего у вашего хостинг-провайдера он тоже доступен.
Вернёмся, как говорится, к нашим баранам. Должен ещё упомянуть, что в Linux во многих командах разрешена сокращённая форма записи, в которой опции команды пишутся просто одна за другой без пробелов и без использования знака «-» (т.е. запись tar czf эквивалентна записи tar -c -z -f). Далее буду указывать обе формы. Всё хватит ремарок расскажу о самой команде, точнее о её ключах:
- Ключ c или -c означает «создать архив». Тут, я думаю, понятно.
- Ключ z или -z означает, что в данной операции нужно использовать сжатие архиватора gzip (тот самый симбиоз о котором я упомянул ранее). Это нужно для того, чтобы уменьшить размер файла резервной копии.
- Ну и последний использованный мною ключ это f или -f который означает, что будет создан архив имя которого следует сразу же за ключом (в нашем случае это <name.tar.gz>).
- <name.tar.gz> — как я только, что упомянул это имя архива в который будет закована резервная копия нашего сайта. Столь скрупулёзное написание обоих расширений в конце файла это просто правило хорошего тона и не более. архиватор tar своё расширение добавляет автоматом, а вот gzip увы нет (он наверное просто лентяй), но для узнаваемости файлы именуют именно так, ну и я не отступал от этого правила. Ещё должен сказать (просто для справки), что на выходе на самом деле получается двойной архив с начало созданный tar-ом а потом пожатый gzip-ом.
- И наконец <name_dir> это всё то, что нужно поместить в архив. Я обычно тут пишу просто имя поддиректории для директории запуска команды которую мне необходимо поместить в архив. Например всем хорошо знакомый public_html.
Должен ещё заметить, что во многих источниках ко всем этим ключам ещё часто добавляют ключ v или -v который означает, что необходимо поместить в архив не только все файлы, но и все директории (т.е. полное сохранение всей файловой структуры архивируемой поддиректории). Но у меня всё и так работает потому я просто не стал упоминать этот ключ в команде а просто сделал эту сноску.
Ну вот собственно и всё, что касается архивации каталога сайта.
Упомяну ещё команду распаковки архива созданного описанным методом. Она выглядит так:
tar xzf <name.tar.gz>
Она отличается от команды создания архива только ключом x или -x который и означает, что архив нужно не создать, а распаковать. И в случае распаковки архива достаточно указать лишь имя файла-архива, а <name_dir> указывать не обязательно, тогда всё произойдёт в директории запуска данной команды, т.е. в ней появится всё содержимое нашего архива с сохранением всей файловой структуры.
Вот собственно и вся премудрость.