Как скопировать сайт linux
Резервное копирование сайта – это создание заархивированной копии файлов, и дампа базы данных сайта, в специально выделенной директории, на том же или удалённом сервере.
Восстановление сайта из резервной копии – это замена файлов, и содержимого базы данных сайта, на предварительно сохранённые копии. После процедуры восстановления, всё содержимое сайта, откатывается на момент создания резервной копии, из которой произведено восстановление.
Чтобы всё было наглядно, в качестве «жертвы» резервного копирования и восстановления, будем использовать веб-приложение OwnCloud, установку которого мы рассматривали в прошлой статье.
Создание Бэкапа файлов сайта
- Чтобы не было путаницы, можно создать инфраструктуру, в которую будет производится резервное копирование.
- Создаём директорию /rezerv, а в ней отдельные директории для резервных копий файлов сайта, и базы данных.
- Создаём директории site и baza.
- Для создания бэкапа файлов сайта, мы будем использовать утилиту tar.
- Нам нужно создать архив файлов сайта, с понятным для нас названием, чтобы мы в итоге могли понять, что это за копия, и когда она создана.
Команда будет выглядеть так:
--- Будет создана заархивированная копия директории owncloud, находящейся в /var/www/html/.
--- Созданный архив будет расположен в директории /rezerv/site/.
--- Архив будет иметь название вида: backup-дата_время создания.tar.gz
- Отправляем команду в консоль, и проверяем результат.
- В директории /rezerv/site/ появился архив, с настроенным нами названием.
Создание Бэкапа базы данных сайта
- Теперь займёмся созданием резервной копии базы данных, по аналогии с резервной копией файлов сайта.
- Будем использовать утилиту mysqldump.
Команда будет выглядеть так:
--- Будет создан дамп базы данных oblako, от имени пользователя oblako, с паролем 123.
--- Дамп будет заархивирован и расположен в директории /rezerv/baza/.
--- Архив будет иметь название вида: mysql -дата и время создания. sql.gz
- Отправляем команду в консоль, и проверяем результат.
- В результате получаем архив с дампом базы данных, и задуманным нами названием.
- Как видите сделать бэкап сайта не так уж и сложно. Кроме того, не требуется каких-то дополнительных компонентов. Всё что нужно, уже есть в системе.
Настройка автоматического бэкапа сайта
- Мы рассмотрели создание бэкапа сайта в ручную, но есть способ автоматизировать этот процесс.
- Для организации автоматического бэкапа сайта, мы будем использовать системный планировщик заданий cron.
- Для добавления задания в cron на CentOS, нам нужно открыть файл /etc/crontab.
- В файле crontab, есть комментарии по правильной настройке выполнения заданий.
- Задание на выполнение ежедневного бэкапа файлов сайта в 2:30 ночи, с настройками использованными нами выше, будет выглядеть так:
- А задание на выполнение ежедневного бэкапа базы данных, так же в 2:30 ночи, с настройками использованными нами выше , будет выглядеть так:
- Добавляем оба задания в файл crontab, и сохраняем изменения.
Восстановление файлов сайта из бэкапа.
- Заходим в директорию с резервными копиями файлов сайта.
- Нас интересует точное название архива, из которого мы хотим произвести восстановление.
- Разархивируем нужный архив.
- В директории /rezerv/site, появится папка owncloud с файлами, которые и нужно восстановить.
- Следующая команда произведёт замену файлов в корневой директории сайта, файлами из разархивированного бэкапа.
- Восстановление файлов сайта из бэкапа завершено.
Восстановление базы данных сайта из бэкапа.
- После восстановления файлов сайта, произведём восстановление базы данных из бэкапа.
- Заходим в директорию с резервными копиями базы данных.
- Так же как и в случае с бэкапом файлов, нас интересует точное название нужного нам архива.
- Подключаемся к базе данных под необходимыми правами.
- Восстановление базы данных сайта из бэкапа завершено.
Сегодня мы рассмотрели тему: "Бэкап и восстановление сайта в Linux". Научились делать бэкапы, и производить восстановление. Смотрите также видео по теме.
Надеюсь статья была вам полезна. До встречи в новых статьях.
Видео на тему "Бэкап и восстановление сайта в Linux":
Понравилась статья?Напиши Комментарий, и Поделись с Друзьями!
WMZ-кошелёк = Z667041230317
WMR-кошелёк = R571680308266 ✔ Для вас важна анонимность и безопасность в сети Internet?
✔ Вы боитесь доверять сторонним VPN сервисам из-за утечки информации?
✔ Вам нужен VPN, где гарантированно не ведутся логи?
✔ Хотите иметь возможность делиться VPN со своими близкими и друзьями?
✅ Лучшим решением будет - Персональный VPN-Cервер , работающий только для Вас.
* В зависимости от хостинг-провайдера и параметров самого сервера, ежемесячная оплата сервера, может быть дешевле, чем покупка многих платных vpn-клиентов (от 100 руб в месяц).
* При покупке платных vpn-клиентов, Вам предоставляют возможность одновременного использования максимум 5 устройств-клиентов, иногда даже с ограниченным трафиком. В случае с Персональным VPN-сервером, количество устройств-клиентов зависит от Вашего желания, и ограничивается только ресурсами самого сервера.
* Так как многие Vpn-сервисы в какой-либо форме производят сбор данных о своих пользователях, Персональный Vpn-сервер – это ещё и защита от утечек информации.
- Если у Вас уже есть работающий VDS или выделенный сервер (отвечающий необходимым параметрам), то стоимость настройки составит - всего 500 руб.
Материал данной статьи предназначен исключительно для личного использования с целью изучения стороннего кода, либо для целей offline чтения контента в условиях отсутствия Интернета. Также данный материал может быть полезен с целью изучения функции wget. Предупреждаю Вас, что копирование стороннего сайта и использование его в коммерческих целях запрещено и Вы можете понести ответственность за свои действия!
Допустим Вам предстоит длительный полёт в самолёте, Интернета не будет и Вы хотите скачать себе какой-либо интересный ресурс для чтения при отсутствии Интернета. Для этого есть прекрасный инструмент, используемый в UNIX-подобных системах (Linux, Mac OS). Также можно найти вариант для Windows.
В Linux wget ставится с помощью пакетного менеджера. Если у Вас система, основанная на Debian (Ubuntu и прочие), то команда будет следующей:
Затем, переходим в нужную нам папку, например Desktop и выполняем команду:
Начнётся скачивание. Оно может занять как несколько минут, так и несколько часов, в зависимости от размера ресурса.
А сейчас давайте подробнее рассмотрим параметры, используемые в команде.
По завершению выполнения программы у Вас появится папка с названием сайта, в которую Вам нужно будет зайти и открыть файл index.html в Вашем любимом браузере. Вы увидите полную копию сайта, которую можно использовать удалённо и читать интересные для Вас материалы.
Обратите внимание, что база данных сайта не скачивается. Т.е. весь контент, который изначально находился в базе данных, был скачан и преобразован в html файлы.
Также, есть ещё один ньюанс. Часть ссылок на файлы из меню скачанного сайта может указывать не на файлы, а на каталоги. К примеру, на сайте есть рубрика: "Книги о программировании". В меню сайта указана ссылка на раздел, к примеру: "/program_books/". Данная ссылка сработает на сервере, но не сработает на локальной машине. Ведь сервер при указании ссылки на папку, автоматически ищет в ней файл index. Чтобы решить эту проблему, Вам нужно будет включить сервер на своей машине. Если Вы будете использовать Windows, то установите программу Open Server (кстати, это лучшая программа для локального сервера для Windows), закачайте в папку с сайтами папку с Вашим сайтом, перезапустите Open Server и после этого открывайте сайт. Если Вы используете Linux, Mac OS - зайдите через консоль в папку с сайтом и выполните команду:
Wget скачает для Вас все файлы и расположит их в указанной папке. Очень удобная и полезная опция!
Желаю Вам удачного использования данных функций в личных целях, для изучения и тестирования.
Подписывайтесь на группу в ВКонтакте, вступайте в сообщество на Facebook, чтобы всегда быть в курсе актуальных выпусков
W e b d e v e l o p m e n t b l o g !
wget — это утилита, которая предназначена для загрузки файлов по сети (из интернета). Я расскажу, как использовать wget, чтобы скачивать сайты из интернета целиком и затем просматривать их в автономном режиме.
С помощью wget можно скачивать сайты, включая картинки, всего лишь указав адрес сайта и определенные параметры. wget будет автоматически переходить по ссылкам на сайте и скачивать страницу за страницей. Рассмотрим несколько примеров от простых к более сложным использования wget для скачивания сайтов.
Чтобы скачать сайт целиком с помощью wget нужно выполнить команду:
Рассмотрим используемые параметры:
-r | — | указывает на то, что нужно рекурсивно переходить по ссылкам на сайте, чтобы скачивать страницы. |
-k | — | используется для того, чтобы wget преобразовал все ссылки в скаченных файлах таким образом, чтобы по ним можно было переходить на локальном компьютере (в автономном режиме). |
-p | — | указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.). |
-l | — | определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5, в примере мы установили 7). В большинстве случаев сайты имеют страницы с большой степенью вложенности и wget может просто «закопаться», скачивая новые страницы. Чтобы этого не произошло можно использовать параметр -l. |
-E | — | добавлять к загруженным файлам расширение .html. |
-nc | — | при использовании данного параметра существующие файлы не будут перезаписаны. Это удобно, когда нужно продолжить загрузку сайта, прерванную в предыдущий раз. |
Мы рассмотрели лишь одно из возможных применений утилиты wget. На самом деле область применения wget значительно шире и wget обладает большим числом дополнительных параметров. За более подробной информацией обращайтесь к руководству, выполнив в командной строке: man wget.
Пришедшая из мира Linux, свободно распространяемая утилита Wget позволяет скачивать как отдельные файлы из интернета, так и сайты целиком, следуя по ссылкам на веб-страницах.
Чтобы получить подсказку по параметрам WGet наберите команду man wget в Linux или wget.exe --help в Windows.
Если предполагается загрузка с сайта какого-либо одного каталога (со всеми вложенными в него папками), то логичнее будет включить в командную строку параметр -np. Он не позволит утилите при поиске файлов подниматься по иерархии каталогов выше указанной директории:
Если загрузка данных была случайно прервана, то для возобновления закачки с места останова, необходимо в команду добавить ключ -с:
По умолчанию всё скаченное сохраняется в рабочей директории утилиты. Определить другое месторасположение копируемых файлов поможет параметр -P:
Наконец, если сетевые настройки вашей сети предполагают использование прокси-сервера, то его настройки необходимо сообщить программе. См. Конфигурирование WGET
Загрузка всех URL, указанных в файле FILE:
Скачивание файла в указанный каталог (-P):
Скачивание в фоновом режиме (-b):
Продолжить (-c continue) загрузку ранее не полностью загруженного файла:
luzer/my-archive/ и всех его подкаталогов, при этом не поднимаясь по иерархии каталогов выше:
Для того, чтобы во всех скачанных страницах ссылки преобразовывались в относительные для локального просмотра, необходимо использовать ключ -k:
Также поддерживается идентификация на сервере:
Скопировать весь сайт целиком:
Например, не загружать zip-архивы:
Залогиниться и скачать файлик ключа
Внимание! Регистр параметров WGet различен!
Базовые ключи запуска
-V
--version
Отображает версию Wget.
-h
--help
Выводит помощь с описанием всех ключей командной строки Wget.
-b
--background
Переход в фоновый режим сразу после запуска. Если выходной файл не задан -o, выход перенаправляется в wget-log.
-e command
--execute command
Выполнить command, как если бы она была частью файла .wgetrc. Команда, запущенная таким образом, будет выполнена после команд в .wgetrc, получая приоритет над ними. Для задания более чем одной команды wgetrc используйте несколько ключей -e.
Протоколирование и ключи входного файла
-a logfile
--append-output=logfile
Дописывать в logfile. То же, что -o, только logfile не перезаписывается, а дописывается. Если logfile не существует, будет создан новый файл.
-d
--debug
Включает вывод отладочной информации, т.е. различной информации, полезной для разработчиков Wget при некорректной работе. Системный администратор мог выбрать сборку Wget без поддержки отладки, в этом случае -d работать не будет. Помните, что сборка с поддержкой отладки всегда безопасна - Wget не будет выводить отладочной информации, пока она явно не затребована через -d.
-q
--quiet
Выключает вывод Wget.
-v
--verbose
Включает подробный вывод со всей возможной информацией. Задано по умолчанию.
-i file
--input-file=file
Читать URL из входного файла file, в этом случае URL не обязательно указывать в командной строке. Если адреса URL указаны в командной строке и во входном файле, первыми будут запрошены адреса из командной строки. Файл не должен (но может) быть документом HTML - достаточно последовательного списка адресов URL. Однако, при указании --force-html входной файл будет считаться html. В этом случае могут возникнуть проблемы с относительными ссылками, которые можно решить указанием <base href="url"> внутри входного файла или --base=url в командной строке.
-F
--force-html
При чтении списка адресов из файла устанавливает формат файла как HTML. Это позволяет организовать закачку по относительным ссылкам в локальном HTML-файле при указании <base href="url"> внутри входного файла или --base=url в командной строке.
-B URL
--base=URL
Используется совместно c -F для добавления URL к началу относительных ссылок во входном файле, заданном через -i.
Ключи скачивания
--bind-address=ADDRESS
При открытии клиентских TCP/IP соединений bind() на ADDRESS локальной машины. ADDRESS может указываться в виде имени хоста или IP-адреса. Этот ключ может быть полезен, если машине выделено несколько адресов IP.
-t number
--tries=number
Устанавливает количество попыток в number. Задание 0 или inf соответствует бесконечному числу попыток. По умолчанию равно 20, за исключением критических ошибок типа "в соединении отказано" или "файл не найден" (404), при которых попытки не возобновляются.
-O file
--output-document=file
Документы сохраняются не в соответствующие файлы, а конкатенируются в файл с именем file. Если file уже существует, то он будет перезаписан. Если в качестве file задано -, документы будут выведены в стандартный вывод (отменяя -k). Помните, что комбинация с -k нормально определена только для скачивания одного документа.
-nc
--no-clobber
Если файл скачивается более одного раза в один и тот же каталог, то поведение Wget определяется несколькими ключами, включая -nc. В некоторых случаях локальный файл будет затёрт или перезаписан при повторном скачивании, в других - сохранён.
При запуске Wget без -N, -nc или -r скачивание того же файла в тот же каталог приводит к тому, что исходная копия файла сохраняется, а новая копия записывается с именем file.1. Если файл скачивается вновь, то третья копия будет названа file.2 и т.д. Если указан ключ -nc, такое поведение подавляется, Wget откажется скачивать новые копии файла. Таким образом, "no-clobber" неверное употребление термина в данном режиме - предотвращается не затирание файлов (цифровые суффиксы уже предотвращали затирание), а создание множественных копий.
При запуске Wget с ключом -r, но без -N или -nc, перезакачка файла приводит к перезаписыванию на место старого. Добавление -nc предотвращает такое поведение, сохраняя исходные версии файлов и игнорируя любые новые версии на сервере.
При запуске Wget с ключом -N, с или без -r, решение о скачивании новой версии файла зависит от локальной и удалённой временных отметок и размера файла. -nc не может быть указан вместе с -N.
При указании -nc файлы с расширениями .html и .htm будут загружаться с локального диска и обрабатываться так, как если бы они были скачаны из сети.
-c
--continue
Продолжение закачки частично скачанного файла. Это полезно при необходимости завершить закачку, начатую другим процессом Wget или другой программой. Например:
Если в текущем каталоге имеется файл ls-lR.Z, то Wget будет считать его первой частью удалённого файла и запросит сервер о продолжении закачки с отступом от начала, равному длине локального файла.
Нет необходимости указывать этот ключ, чтобы текущий процесс Wget продолжил закачку при пи потере связи на полпути. Это изначальное поведение. -c влияет только на закачки, начатые до текущего процесса Wget, если локальные файлы уже существуют.
Без -c предыдущий пример сохранит удалённый файл в ls-lR.Z.1, оставив ls-lR.Z без изменения.
Начиная с версии Wget 1.7, при использовании -c с непустым файлом, Wget откажется начинать закачку сначала, если сервер не поддерживает закачку, т.к. это привело бы к потере скачанных данных. Удалите файл, если вы хотите начать закачку заново.
С другой стороны, при использовании -c локальный файл будет считаться недокачанным, если длина удалённого файла больше длины локального. В этом случае (длина(удалённая) - длина(локальная)) байт будет скачано и приклеено в конец локального файла. Это ожидаемое поведение в некоторых случаях: например, можно использовать -c для скачивания новой порции собранных данных или лог-файла.
Однако, если файл на сервере был изменён, а не просто дописан, то вы получите испорченный файл. Wget не обладает механизмами проверки, является ли локальный файл начальной частью удалённого файла. Следует быть особенно внимательным при использовании -c совместно с -r, т.к. каждый файл будет считаться недокачанным.
Испорченный файл также можно получить при использовании -c с кривым HTTP прокси, который добавляет строку тима "закачка прервана". В будущих версиях возможно добавление ключа "откат" для исправления таких случаев.
--progress=type
Выбор типа индикатора хода закачки. Возможные значения: "dot" и "bar".
Индикатор типа "bar" используется по умолчанию. Он отображает ASCII полосу хода загрузки (т.н. "термометр"). Если вывод не в TTY, то по умолчанию используется индикатор типа "dot".
Для переключения в режим "dot" укажите --progress=dot. Ход закачки отслеживается и выводится на экран в виде точек, где каждая точка представляет фиксированный размер скачанных данных.
При точечной закачке можно изменить стиль вывода, указав dot:style. Различные стили определяют различное значение для одной точки. По умолчанию одна точка представляет 1K, 10 точек образуют кластер, 50 точек в строке. Стиль binary является более "компьютер"-ориентированным - 8K на точку, 16 точек на кластер и 48 точек на строку (384K в строке). Стиль mega наиболее подходит для скачивания очень больших файлов - каждой точке соответствует 64K, 8 точек на кластер и 48 точек в строке (строка соответствует 3M).
Стиль по умолчанию можно задать через .wgetrc. Эта установка может быть переопределена в командной строке. Исключением является приоритет "dot" над "bar", если вывод не в TTY. Для непременного использования bar укажите --progress=bar:force.
-N
--timestamping
Включает использование временных отметок.
--spider
При запуске с этим ключом Wget ведёт себя как сетевой паук, он не скачивает страницы, а лишь проверяет их наличие. Например, с помощью Wget можно проверить закладки:
Эта функция требует большой доработки, чтобы Wget достиг функциональности реальных сетевых пауков.
-T seconds
--timeout=seconds
Устанавливает сетевое время ожидания в seconds секунд. Эквивалентно одновременному указанию --dns-timeout, --connect-timeout и --read-timeout.
Когда Wget соединяется или читает с удалённого хоста, он проверяет время ожидания и прерывает операцию при его истечении. Это предотвращает возникновение аномалий, таких как повисшее чтение или бесконечные попытки соединения. Единственное время ожидания, установленное по умолчанию, - это время ожидания чтения в 900 секунд. Установка времени ожидания в 0 отменяет проверки.
Если вы не знаете точно, что вы делаете, лучше не устанавливать никаких значений для ключей времени ожидания.
--dns-timeout=seconds
Устанавливает время ожидания для запросов DNS в seconds секунд. Незавершённые в указанное время запросы DNS будут неуспешны. По умолчанию никакое время ожидания для запросов DNS не устанавливается, кроме значений, определённых системными библиотеками.
--connect-timeout=seconds
Устанавливает время ожидания соединения в seconds секунд. TCP соединения, требующие большего времени на установку, будут отменены. По умолчанию никакое время ожидания соединения не устанавливается, кроме значений, определённых системными библиотеками.
--read-timeout=seconds
Устанавливает время ожидания чтения (и записи) в seconds секунд. Чтение, требующее большего времени, будет неуспешным. Значение по умолчанию равно 900 секунд.
--limit-rate=amount
Устанавливает ограничение скорости скачивания в amount байт в секунду. Значение может быть выражено в байтах, килобайтах с суффиксом k или мегабайтах с суффиксом m. Например, --limit-rate=20k установит ограничение скорости скачивания в 20KB/s. Такое ограничение полезно, если по какой-либо причине вы не хотите, чтобы Wget не утилизировал всю доступную полосу пропускания. Wget реализует ограничение через sleep на необходимое время после сетевого чтения, которое заняло меньше времени, чем указанное в ограничении. В итоге такая стратегия приводит к замедлению скорости TCP передачи приблизительно до указанного ограничения. Однако, для установления баланса требуется определённое время, поэтому не удивляйтесь, если ограничение будет плохо работать для небольших файлов.
-w seconds
--wait=seconds
Ждать указанное количество seconds секунд между закачками. Использование этой функции рекомендуется для снижения нагрузки на сервер уменьшением частоты запросов. Вместо секунд время может быть указано в минутах с суффиксом m, в часах с суффиксом h или днях с суффиксом d.
Указание большого значения полезно, если сеть или хост назначения недоступны, так чтобы Wget ждал достаточное время для исправления неполадок сети до следующей попытки.
--waitretry=seconds
Если вы не хотите, чтобы Wget ждал между различными закачками, а только между попытками для сорванных закачек, можно использовать этот ключ. Wget будет линейно наращивать паузу, ожидая 1 секунду после первого сбоя для данного файла, 2 секунды после второго сбоя и так далее до максимального значения seconds. Таким образом, значение 10 заставит Wget ждать до (1 + 2 + . + 10) = 55 секунд на файл. Этот ключ включён по умолчанию в глобальном файле wgetrc.
--random-wait
Некоторые веб-сайты могут анализировать логи для идентификации качалок, таких как Wget, изучая статистические похожести в паузах между запросами. Данный ключ устанавливает случайные паузы в диапазоне от 0 до 2 * wait секунд, где значение wait указывается ключом --wait. Это позволяет исключить Wget из такого анализа. В недавней статье на тему разработки популярных пользовательских платформ был представлен код, позволяющий проводить такой анализ на лету. Автор предлагал блокирование подсетей класса C для блокирования программ автоматического скачивания, несмотря на возможную смену адреса, назначенного DHCP. На создание ключа --random-wait подвигла эта больная рекомендация блокировать множество невиновных пользователей по вине одного.
-Y on/off
--proxy=on/off
Включает или выключает поддержку прокси. Если соответствующая переменная окружения установлена, то поддержка прокси включена по умолчанию.
Ключи каталогов
-nd
--no-directories
Не создавать структуру каталогов при рекурсивном скачивании. С этим ключом все файлы сохраняются в текущий каталог без затирания (если имя встречается больше одного раза, имена получат суффикс .n).
Если вам нужно лишь избавиться от структуры каталогов, то этот ключ может быть заменён комбинацией -nd и -P. Однако, в отличии от -nd, --cut-dirs не теряет подкаталоги - например, с -nH --cut-dirs=1, подкаталог beta/ будет сохранён как xxx/beta, как и ожидается.
-P prefix
--directory-prefix=prefix
Устанавливает корневой каталог в prefix. Корневой каталог - это каталог, куда будут сохранены все файлы и подкаталоги, т.е. вершина скачиваемого дерева. По умолчанию . (текущий каталог).
--no-cache
Отключает кеширование на стороне сервера. В этой ситуации Wget посылает удалённому серверу соответствующую директиву (Pragma: no-cache) для получения обновлённой, а не кешированной версии файла. Это особенно полезно для стирания устаревших документов на прокси серверах. Кеширование разрешено по умолчанию.
/.mozilla в директории вашего профиля. Полный путь обычно выглядит как
--header=additional-header
Укажите дополнительный заголовок additional-header для передачи HTTP серверу. Заголовки должны содержать ":" после одного или более непустых символов и недолжны содержать перевода строки. Вы можете указать несколько дополнительных заголовков, используя ключ --header многократно.
Указание в качестве заголовка пустой строки очищает все ранее указанные пользовательские заголовки.
--referer=url
Включает в запрос заголовок `Referer: url'. Полезен, если при выдаче документа сервер считает, что общается с интерактивным обозревателем, и проверяет, чтобы поле Referer содержало страницу, указывающую на запрашиваемый документ.
Читайте также: