Специалисты компании «Интегрус» окажут помощь по восстановлению данных на сервере. Поможем решить задачи по восстановлению файл-сервера, серверных ОС, серверов приложений, почтовых, DNS- и веб-серверов, нормализуем работоспособность всего серверного функционала.
Потеря данных на сервере в случае сбоя или внедрения вируса может быть критичной, если не подготовиться к ней заранее. Чтобы предотвратить потерю информации, следует грамотно настраивать резервное копирование и архивацию данных.
Сервер является ключевой точкой ИТ-инфраструктуры, хранилищем массива информации и критичных для работы программ. Он выступает как связующее звено между всеми компьютерами компании, соединенными в корпоративную сеть, а также используется как резервная база данных для сетевого оборудования. Возникновение неисправности сервера приводит к нестабильности или приостановке всех бизнес-процессов.
В ситуации сбоя, вирусной атаки или взлома необходимо быстро восстановить данные с сервера, чтобы они не оказались безвозвратно утраченными. В попытке вернуть утерянные файлы и папки категорически не рекомендуется запускать восстановление массива, т.к. операция мешает восстановлению работоспособности.
Что вызывает неисправность сервера?
Сервер выходит из строя редко. В качестве основных причин сбоя чаще всего выступают физическое отключение, вирусные атаки (в т.ч. вирусами-шифровальщиками), поломка комплектующих либо ошибка конфигурации, а также:
- невнимательность в момент повторной сборки RAID-массивов;
- некорректное обновление ОС;
- баг в таблице разделов, файловой системе;
- некорректные настройки;
- попытка предотвратить данных с сервера сотрудниками, не имеющими нужной компетенции;
- сбой таблицы записей операционной системы сервера;
- случайное удаление критически значимых файлов.
Чтобы не допустить неполадок с сервером, нужно:
- регулярно создавать бэкапы с обязательной проверкой их целостности;
- менять HDD один раз в два-три года;
- своевременно обновлять антивирусы;
- поддерживать работоспособность источников бесперебойного питания;
- регулярно обслуживать серверное оборудование;
- анализировать логи;
- контролировать записи логов программ бэкапа.
Как восстановить данные с сервера
Восстановление удаленных файлов на сервере возможно для SATASASIDE дисков, RAID, NAS, SAN СХД. Как правило, у клиентов иногда возникает вопрос: случайно удалили файл с сервера, как восстановить его, какая информация подлежит восстановлению?
Восстановить можно:
- файл-сервер и данные с него;
- серверные ОС для Windows Server 2003, 2008, 2012, 2016, Linux, Ubuntu;
- серверы приложений;
- веб-серверы;
- почтовые серверы;
- DNS-серверы;
- данные разрушенной файловой системы.
Специалисты, чтобы восстановить удаленные файлы с сервера, должны:
- Провести первичное обследование, выяснить конфигурацию используемого оборудования и установленного ПО, установить причину сбоя. Наличие резервных копий упрощает процесс восстановления. Только после учета всех факторов определяются срок и стоимость работы.
- Выполнить бэкап для возможности возврата к исходной точке.
- Восстановить минимальную работоспособность сервера, достаточную для поддержки критических бизнес-процессов.
- Восстановить и нормализовать функционал сервера, дать рекомендации по обслуживанию и профилактическим работам в рамках регламента.
Восстановление файлов семейства Windows Server
Имея резервную копию, можно восстановить сервер до прежнего состояния системы. Для этого используется встроенный «Мастер резервного копирования».
Восстановление файл-сервера
Бэкапы, при создании которых использовались средства системы архивации Windows Server, нужны для восстановления ОС, стабильных состояний системы, а также томов, приложений, любых данных, каталогов, локальных папок и файлов.
Также используют:
- Установочные диски или установку среды восстановления для восстановления критических томов ОС либо сервера целиком.
- «Мастер восстановления каталога» доступен только при повреждении отдельных каталогов бэкапа.
Выполнить восстановление файл-сервера Server 2008 (или более поздних версий) может только пользователь, являющийся членом группы «Операторов архива» или «Администраторов», либо тот, кому делегированы полномочия на выполнение процедуры.
Нельзя использовать бэкапы, если они созданы через Ntbackup.exe. Версия работает только для пользователей Windows Server 2008.
В случае использования BitLocker, после восстановления нужно применить шифрование диска к серверу вручную, т.к. оно не запускается автоматически.
Как восстановить папку на сервере
Перед тем, как восстановить файл или папку на сервере, надо перенести их в удаленную общую папку либо на внешний диск. Восстановление с DVD-дисков или съемных носителей не работает.
Для восстановления с ПК под ОС Windows Server 2008 надо убедиться, что архив не является частью архива состояния системы, т.к. это делает откат невозможным.
Для восстановления файлов Windows Server 2016, системных файлов Windows Server 2012/2012R или при необходимости восстановить файлы на сервере 2008 используется одинаковый алгоритм.
- Проверить доступность диска (удаленной папки) с архивом для сервера.
- Определить, что именно подлежит восстановлению (файлы, папки).
- Выбрать «Пуск» > «Администрирование» > «Система архивации данных…».
- Выбрать место расположения архива (сервер, локальный диск, удаленная общая папка)
- Выбрать в календаре требуемую дату отката и копию архива из предложенного списка.
- Выбрать тип восстановления.
- Выбрать требуемые элементы через раздел доступных элементов.
- Указать параметры восстановления (исходное либо другое).
- Так как «Мастер» может обнаружить уже присутствующие элементы, следует указать, как поступить (создавать разные копии, перезаписывать восстанавливаемую версию поверх, не восстанавливать дубликаты).
- Разрешить восстановление разрешений списка управления доступом для восстанавливаемых папок и файлов.
- После проверки запустить восстановление и открыть страницу «Ход восстановления», где отображаются статус процесса и сведения об успехе/неуспехе операции.
Для Windows Server 2012/2012 r2/2016 при восстановлении системных файлов необходимо, чтобы пользователь обладал необходимыми полномочиями и являлся членом группы «Операторов архива» или «Администраторов».
Чтобы восстановить удаленную папку с сервера, можно воспользоваться командой подключения через консоль управления к другому компьютеру. Пользователь должен обладать правами оператора архива или администратора, которые соответствуют параметрам безопасности DCOM.
Восстановить папку и файлы можно, если локальный и удаленный серверы имеют одну и ту же версию ОС Windows (например, Windows Server 2008 или Windows Server 2008 r2). Функция не предназначена для управления ПК под клиентской версией ОС Windows.
Чтобы узнать, как восстановить удаленный файл на сервере, если он не найден, следует:
- проверить корзину;
- воспользоваться программой восстановления файлов MiniTool Power Data Recovery. Она подходит для всех версий, начиная с 2008;
- извлечь утраченный файл из резервной копии.
Восстановление данных сервера администрирования
Чтобы восстановить данные сервера администрирования Касперского, необходимо иметь резервную копию. Далее требуется:
- запустить утилиту klbackup из установочной папки;
- выбрать «Выполнить восстановление данных сервера администрирования», в нем предусмотрен режим для восстановления только сертификата сервера;
- указать пароль и папку с резервной копией.
Для полного восстановления данных обязательно нужно сохранить сертификат. Логин и пароль используется тот же, что и при создании бэкапа.
Как восстановить данные с сервера Яндекс
Сервер Yandex хранит разные виды данных после удаления на протяжении срока, установленного законом. Чтобы восстановить данные, нужно предварительно создать архив с данными, хранящимися на сервере поисковой системы. Т.к. сервисы не хранят личные данные или имеют ограничение на хранение данного типа информации, архив может оказаться неполным. Поэтому его регулярно надо обновлять.
Архив можно хранить на личном ПК. Когда потребуется восстановить данные с сервера Yandex, нужно будет ввести пароль (найти его можно в личных данных на Яндексе), распаковать архив на компьютере, работающем с ОС Windows/Linux (для macOS нужен архиватор с поддержкой 7-zip). Данные, относящиеся к работе каждого локального сервиса, хранятся внутри архива в папках.
Как восстановить данные с сервера Google*
Восстановить данные можно только в том случае, если они размещались в подключенной папке или репозитории. Заранее надо создавать резервные копии на ПК, добавляя файлы из облака вручную либо через утилиту синхронизации.
Восстановить бэкап можно из облачного хранилища, воспользовавшись программой Google «Start and Sync»*. Синхронизация позволяет не потерять ни одного файла при записи архива, т.к. учитываются как файлы папок, так и облачного хранилища. Для создания архива надо:
- загрузить Google.Диск* на компьютер;
- запустить синхронизацию;
- сохранить все данные на ПК.
Вся сохраненная информация может быть восстановлена на сервере Гугл* в полном объеме.
Как восстановить данные с сервера IP
Локальная сеть организуется через удаленный сервер. На нем хранятся общая информация, обновления, также он исполняет сетевые функции. Для восстановления удаленного файлового сервера требуются права администратора и выход в интернет. Далее надо:
- запросить настройки сервера у сисадмина (IP-адрес, доступный диапазон адресов);
- инициализировать подключение сети к ПК через LAN-кабель, выбрать «Сетевое окружение» > «Свойства»;
- зайти в настройки сетевого протокола, указать полученный диапазон адресов и уникальный IP;
- открыть «Сетевое окружение» > «Отобразить компьютеры рабочей группы»;
- после вывода на экран информации возобновить подключение к серверу (могут потребоваться логин и пароль доступа).
Как восстановить файлы на сервере Linux
Восстановление файлов, утерянных из-за сбоев жесткого диска или по неосторожности, проще всего выполняется в Линуксе. Для этого есть инструменты PhotoRec, TestDisk, Safecopy. Они помогают, даже если файл удален навсегда.
- TestDisk – мощный консольный инструмент, требующий ввода команд и работы с псевдографическим мастером. С его помощью извлекаются удаленные файлы с систем FAT, NTFS, exFAT и семейства Ext, восстанавливаются испорченные таблицы разделов GPT и MBR, перезаписывается загрузочный сектор. Он не копирует данные, а исправляет ошибки на уровне разделов.
- Safecopy – утилита копирует данные с поврежденного устройства без завершения работы при обнаружении поврежденных секторов или ошибок чтения. В ней можно создать образ файловой системы даже с аварийного носителя.
- PhotoRec – программа восстанавливает удаленные архивы, документы, фото и видеофайлы. Утилита работает только с сырыми данными, игнорируя файловую систему. Это важно в тех случаях, когда система переформатирована или повреждена.
Файлы при безвозвратном удалении скрываются от файловой системы и могут быть стерты только в момент перезаписи. Чтобы случайно не перезаписать утраченное, надо обозначить раздел как доступный только для чтения.
Восстановить открытые файлы с удаленной файловой системы можно через приложение Isof c примонтированным procfs в /proc. Для восстановления надо знать номер процесса и файловый дескриптор.
Как восстановить файлы на сервере Ubuntu
Восстановление утраченных данных допустимо через специальные утилиты, которые сканируют разделы жесткого диска, находя и возвращая поврежденные или стертые объекты. Операция проходит не всегда удачно из-за фрагментации или полного удаления информации.
Доступные решения подходят для дистрибутивов ОС Ubuntu/Debian под Linux.
Для восстановления используются утилиты TestDisk и Scalpel (работает на всех типах файловых систем и поддерживает большинство популярных форматов данных).
Надо понимать, что каждая утилита не может полностью вернуть утраченные данные, но работа в комплексе позволяет восстановить информацию в максимально возможном объеме.
Как восстановить данные с сервера Outlook
Если возникают проблемы в приложении Outlook с открытием элементом или их отсутствием в папке «Входящие», это означает неполадки с файлами данных (.pst и .ost).
Несмотря на то, что файлы данных с расширением .pst надежны и выходят из строя редко, в Microsoft Outlook предусмотрен инструмент восстановления неполадок (в том числе автоматический для файлов .ost).
Чтобы восстановить автономный файл данных .ost, потребуется:
- открыть «Панель управления»;
- войти в раздел «Почта», где содержится вся информация о профилях;
- в окне Outlook выбрать «Конфигурацию» для просмотра параметров учетных записей и файлов данных;
- выбрать тот профиль, который требует исправления;
- через «Свойства» перейти в «Учетные записи» и получить доступ к настройкам и каталогам почты;
- выбрав нужный профиль, перейти в «Файлы данных», в котором можно менять параметры;
- выбрать испорченную запись и открыть папку, где хранится файл;
- удалить автоматически выделенный файл с расширением .ost;
- открыть Microsoft Outlook, чтобы автоматически воссоздать файл уже без неполадок.
Чтобы восстановить автономный файл данных .pst, потребуется:
- закрыть почту;
- нажать Windows + R;
- набрать команду с учетом разрядности ОС;
- выбрать файл SCANPST.EXE для открытия интерфейса средств восстановления;
- найти через кнопку «Обзор» испорченный файл;
- открыть резервный файл backup.pst;
- запустить диагностику и исправление ошибок;
- проверив целостность файла, система предложит восстановить данные.
Также можно восстановить данные из резервной копии через приложение Microsoft Outlook или стандартные инструменты, применяемые в ОС Windows 10 для восстановления.
Не серверах нет корзин, поэтому в большинстве случаев для восстановления удаленных файлов требуется помощь специалистов. Способ действий зависит от типа операционной системы и утилит.
* — компания нарушает законодательство РФ.
Присоединяйтесь к нам, чтобы каждую неделю получать полезные и рабочие материалы для улучшения вашего бизнеса.
Кейсы и стратегии от экспертов рынка.
Одна из проблем, с которой сталкиваются пользователи, впервые изучающие работу с Linux, заключается в том, как найти файлы, которые они ищут.
В этом руководстве рассказывается, как использовать правильно названную find
команду. Это поможет вам искать файлы в вашей системе, используя различные фильтры и параметры. Также будет кратко рассмотрена locate
команда, которую можно использовать для поиска файлов другим способом.
Предпосылки
Чтобы следовать этому руководству, вам потребуется доступ к компьютеру с операционной системой на базе Linux. Это может быть либо виртуальный частный сервер, к которому вы подключились с помощью SSH, либо ваша локальная машина. Обратите внимание, что это руководство было проверено с использованием сервера Linux с Ubuntu 20.04, но приведенные примеры должны работать на компьютере с любой версией любого дистрибутива Linux.
Если вы планируете использовать удаленный сервер, чтобы следовать этому руководству, мы рекомендуем вам сначала выполнить начальную настройку сервера . Это создаст безопасную серверную среду, включая пользователя без полномочий root с sudo
привилегиями и брандмауэр, настроенный с помощью UFW, который вы сможете использовать для развития своих навыков работы с Linux.
Кроме того, вы можете использовать интерактивный терминал, встроенный в эту страницу, чтобы поэкспериментировать с примерами команд из этого руководства. Щелкните следующее Запустить интерактивный терминал! кнопку, чтобы открыть окно терминала и начать работу в среде Linux (Ubuntu).
Примечание . Чтобы проиллюстрировать, как работают команды find
и locate
, примеры команд в этом руководстве выполняют поиск файлов /
, хранящихся в каталоге или в корневом каталоге . Из-за этого, если вы вошли в терминал как пользователь без полномочий root , некоторые из примеров команд могут включать Permission denied
в свой вывод.
Этого и следовало ожидать, поскольку вы ищете файлы в каталогах, к которым обычные пользователи обычно не имеют доступа. Тем не менее, эти примеры команд должны по-прежнему работать и быть полезными для понимания того, как работают эти программы.
Поиск по имени
Самый очевидный способ поиска файлов — по их имени.
Чтобы найти файл по имени с помощью find
команды, вы должны использовать следующий синтаксис:
find -name "query"
Это будет чувствительно к регистру, то есть поиск query
отличается от поиска Query
.
Чтобы найти файл по имени, но игнорировать регистр запроса, используйте -iname
параметр:
find -iname "query"
Если вы хотите найти все файлы, которые не соответствуют определенному шаблону, вы можете инвертировать поиск с помощью -not
:
find -not -name "query_to_avoid"
Кроме того, вы можете инвертировать поиск, используя восклицательный знак ( !
), например:
find ! -name "query_to_avoid"
Обратите внимание, что если вы используете !
, вы должны экранировать символ обратной косой чертой ( ), чтобы оболочка не пыталась интерпретировать его до того, как
find
сможет действовать.
Поиск по типу
Вы можете указать тип файлов, которые хотите найти, с помощью -type
параметра. Это работает следующим образом:
find -type type_descriptor query
Вот некоторые дескрипторы, которые можно использовать для указания типа файла:
f
: обычный файлd
: каталогl
: символическая ссылкаc
: символьные устройстваb
: блокировать устройства
Например, если вы хотите найти все символьные устройства в вашей системе, вы можете ввести следующую команду:
find /dev -type c
Эта команда специально ищет устройства только в /dev
каталоге, в котором файлы устройств обычно монтируются в системах Linux:
Output
/dev/vcsa5 /dev/vcsu5 /dev/vcs5 /dev/vcsa4 /dev/vcsu4 /dev/vcs4 /dev/vcsa3 /dev/vcsu3 /dev/vcs3 /dev/vcsa2 /dev/vcsu2 /dev/vcs2 . . .
Вы можете искать все файлы, которые заканчиваются .conf
на команду, подобную следующей. В этом примере выполняется поиск соответствующих файлов в /usr
каталоге:
find /usr -type f -name "*.conf"
Output
/usr/src/linux-headers-5.4.0-88-generic/include/config/auto.conf /usr/src/linux-headers-5.4.0-88-generic/include/config/tristate.conf /usr/src/linux-headers-5.4.0-90-generic/include/config/auto.conf /usr/src/linux-headers-5.4.0-90-generic/include/config/tristate.conf /usr/share/adduser/adduser.conf /usr/share/ufw/ufw.conf /usr/share/popularity-contest/default.conf /usr/share/byobu/keybindings/tmux-screen-keys.conf /usr/share/libc-bin/nsswitch.conf /usr/share/rsyslog/50-default.conf . . .
Примечание . В предыдущем примере объединены два find
выражения запроса; а именно -type f
и -name "*.conf"
. Чтобы любой файл был возвращен, он должен удовлетворять обоим этим выражениям.
Вы можете комбинировать такие выражения, разделяя их -and
опцией, но, как показывает этот пример -and
, подразумевается каждый раз, когда вы включаете два выражения. Вы также можете вернуть результаты, которые удовлетворяют любому выражению, разделив их -or
опцией:
find -name query_1 -or -name query_2
В этом примере будут найдены все файлы, имена которых соответствуют либо , query_1
либо query_2
.
Фильтрация по времени и размеру
find
дает вам различные способы фильтрации результатов по размеру и времени.
Размер
Вы можете фильтровать файлы по их размеру с помощью -size
параметра. Чтобы сделать это, вы должны добавить специальный суффикс в конце числового значения размера, чтобы указать, рассчитываете ли вы размер в байтах, мегабайтах, гигабайтах или другом размере. Вот некоторые часто используемые суффиксы размера:
c
: байтk
: килобайтыM
: мегабайтыG
: гигабайтыb
: блоки по 512 байт
Чтобы проиллюстрировать это, следующая команда найдет в /usr
каталоге каждый файл размером ровно 50 байт:
find /usr -size 50c
Чтобы найти файлы размером менее 50 байт, вы можете использовать этот синтаксис:
find /usr -size -50c
Чтобы найти файлы в /usr
каталоге размером более 700 мегабайт, вы можете использовать эту команду:
find /usr -size +700M
Время
Для каждого файла в системе Linux хранит временные данные о времени доступа, времени модификации и времени изменения.
-
Время доступа : время последнего чтения или записи файла.
-
Время модификации : время последнего изменения содержимого файла.
-
Время изменения : время последнего изменения метаданных индексного дескриптора файла.
Вы можете основывать свои find
поиски на этих параметрах, используя параметры -atime
, -mtime
и -ctime
соответственно. Для любого из этих параметров необходимо передать значение, указывающее, сколько дней в прошлом вы хотите выполнить поиск. Подобно параметрам размера, описанным ранее, вы можете добавить к этим параметрам символы «плюс» или «минус», чтобы указать «больше» или «меньше».
Например, чтобы найти файлы в /usr
каталоге, которые были изменены за последний день, выполните следующую команду:
find /usr -mtime 1
Если вам нужны файлы, к которым обращались менее дня назад, вы можете запустить эту команду:
find /usr -atime -1
Чтобы найти файлы, метаинформация которых была изменена более 3 дней назад, вы можете выполнить следующее:
find /usr -ctime +3
Эти параметры также имеют сопутствующие параметры, которые можно использовать для указания минут вместо дней:
find /usr -mmin -1
Это даст файлы, которые были изменены в последнюю минуту.
find
также может выполнять сравнения с эталонным файлом и возвращать более новые:
find / -newer reference_file
Этот синтаксис вернет каждый файл в системе, который был создан или изменен позже, чем эталонный файл.
Поиск по владельцу и разрешениям
Вы также можете искать файлы по пользователю или группе, которой принадлежит файл, используя параметры -user
и -group
соответственно. Чтобы найти каждый файл в /var
каталоге, принадлежащем пользователю syslog , выполните следующую команду:
find /var -user syslog
Точно так же вы можете указать файлы в /etc
каталоге, принадлежащем теневой группе, набрав:
find /etc -group shadow
Вы также можете искать файлы с определенными разрешениями.
Если вы хотите сопоставить точный набор разрешений, вы можете использовать этот синтаксис, указав разрешения с помощью восьмеричной записи:
find / -perm 644
Это будет соответствовать файлам с точно указанными разрешениями.
Если вы хотите указать что-либо, по крайней мере , с этими разрешениями, вы можете поставить перед обозначением разрешений знак минус:
find / -perm -644
Это будет соответствовать любым файлам, имеющим дополнительные разрешения. 744
В этом случае будет сопоставлен файл с разрешениями .
Фильтрация по глубине
В этом разделе вы создадите примерную структуру каталогов, которую затем будете использовать для изучения фильтрации файлов по их глубине внутри структуры.
Если вы следуете примерам в этом руководстве, было бы разумно создать эти файлы и каталоги в /tmp/
каталоге. /tmp/
является временным каталогом , что означает, что любые файлы и каталоги в нем будут удалены при следующей загрузке сервера. Это будет полезно для целей данного руководства, поскольку вы можете создать столько каталогов, файлов и ссылок, сколько захотите, не беспокоясь о том, что они впоследствии засорят вашу систему.
После выполнения команд в этом разделе ваш /tmp/
каталог будет содержать три уровня каталогов, с десятью каталогами на первом уровне. Каждый каталог (включая временный каталог) будет содержать десять файлов и десять подкаталогов.
Создайте примерную структуру каталогов в /tmp/
каталоге с помощью следующей команды:
mkdir -p /tmp/test/level1dir{1..10}/level2dir{1..10}/level3dir{1..10}
После этого заполните эти каталоги несколькими образцами файлов с помощью touch
команды:
touch /tmp/test/{file{1..10},level1dir{1..10}/{file{1..10},level2dir{1..10}/{file{1..10},level3dir{1..10}/file{1..10}}}}
Имея эти файлы и каталоги, перейдите в test/
только что созданный каталог:
cd /tmp/test
Чтобы получить базовое представление о том, как find
будут извлекаться файлы из этой структуры, начните с обычного поиска по имени, который соответствует любым файлам с именами file1
:
find -name file1
Output
./level1dir7/level2dir8/level3dir9/file1 ./level1dir7/level2dir8/level3dir3/file1 ./level1dir7/level2dir8/level3dir4/file1 ./level1dir7/level2dir8/level3dir1/file1 ./level1dir7/level2dir8/level3dir8/file1 ./level1dir7/level2dir8/level3dir7/file1 ./level1dir7/level2dir8/level3dir2/file1 ./level1dir7/level2dir8/level3dir6/file1 ./level1dir7/level2dir8/level3dir5/file1 ./level1dir7/level2dir8/file1 . . .
Это вернет много результатов. Если вы направите вывод в счетчик, вы обнаружите, что есть 1111
общие результаты:
find -name file1 | wc -l
Output
1111
Это, вероятно, слишком много результатов, чтобы быть полезными для вас в большинстве случаев. Чтобы сузить его, вы можете указать максимальную глубину поиска в каталоге поиска верхнего уровня:
find -maxdepth num -name query
Чтобы найти file1
только в level1
каталогах и выше, вы можете указать максимальную глубину 2 (1 для каталога верхнего уровня и 1 для level1
каталогов):
find -maxdepth 2 -name file1
Output
./level1dir7/file1 ./level1dir1/file1 ./level1dir3/file1 ./level1dir8/file1 ./level1dir6/file1 ./file1 ./level1dir2/file1 ./level1dir9/file1 ./level1dir4/file1 ./level1dir5/file1 ./level1dir10/file1
Это гораздо более управляемый список.
Вы также можете указать минимальный каталог, если знаете, что все файлы существуют после определенной точки в текущем каталоге:
find -mindepth num -name query
Вы можете использовать это, чтобы найти только файлы в конце ветвей каталога:
find -mindepth 4 -name file1
Output
./level1dir7/level2dir8/level3dir9/file1 ./level1dir7/level2dir8/level3dir3/file1 ./level1dir7/level2dir8/level3dir4/file1 ./level1dir7/level2dir8/level3dir1/file1 ./level1dir7/level2dir8/level3dir8/file1 ./level1dir7/level2dir8/level3dir7/file1 ./level1dir7/level2dir8/level3dir2/file1 . . .
Опять же, из-за разветвленной структуры каталогов это вернет большое количество результатов (1000).
Вы можете комбинировать параметры минимальной и максимальной глубины, чтобы сосредоточиться на узком диапазоне:
find -mindepth 2 -maxdepth 3 -name file1
Output
./level1dir7/level2dir8/file1 ./level1dir7/level2dir5/file1 ./level1dir7/level2dir7/file1 ./level1dir7/level2dir2/file1 ./level1dir7/level2dir10/file1 ./level1dir7/level2dir6/file1 ./level1dir7/level2dir3/file1 ./level1dir7/level2dir4/file1 ./level1dir7/file1 . . .
>
Такое сочетание этих параметров значительно сужает результаты, возвращая только 110 строк вместо предыдущих 1000.
Вы можете выполнить произвольную вспомогательную команду для всего, что find
соответствует, используя -exec
параметр, используя следующий синтаксис:
find find_parameters -exec command_and_options {} ;
Используется {}
в качестве заполнителя для файлов, которые find
соответствуют. ;
Позволяет find
узнать, где заканчивается команда .
Например, предполагая, что вы все еще находитесь в test/
каталоге, который вы создали в /tmp/
каталоге на предыдущем шаге, вы можете найти файлы в предыдущем разделе, у которых есть 644
разрешения, и изменить их, чтобы они имели 664
разрешения:
find . -type f -perm 644 -exec chmod 664 {} ;
Вы также можете изменить права доступа к каталогу аналогичным образом:
find . -type d -perm 755 -exec chmod 700 {} ;
В этом примере выполняется поиск каждого каталога с установленными разрешениями, 755
а затем изменяются разрешения на 700
.
Поиск файлов с помощьюlocate
Альтернативой использованию find
является команда locate
. Эта команда часто работает быстрее и может легко выполнять поиск по всей файловой системе.
Вы можете установить команду в Debian или Ubuntu apt
, обновив списки пакетов и затем установив пакет mlocate
:
sudo apt update
sudo apt install mlocate
В Rocky Linux, CentOS и других дистрибутивах, производных от RedHat, вместо этого вы можете использовать dnf
команду для установки mlocate
:
sudo dnf install mlocate
Причина того, что locate
быстрее, чем find
есть: она опирается на базу данных, в которой перечислены все файлы в файловой системе. Эта база данных обычно обновляется один раз в день с помощью cron-скрипта, но вы можете обновить ее вручную с помощью updatedb
команды. Запустите эту команду сейчас с sudo
привилегиями:
sudo updatedb
Помните, что locate
база данных всегда должна быть актуальной, если вы хотите найти новые файлы. Если вы добавите новые файлы до выполнения сценария cron или до запуска updatedb
команды, они не будут отображаться в результатах вашего запроса.
locate
позволяет фильтровать результаты несколькими способами. Самый простой способ использовать его для поиска файлов — использовать следующий синтаксис:
locate query
Это будет соответствовать любым файлам и каталогам, которые содержат строку query
в любом месте их пути к файлу. Чтобы возвращать только файлы, имена которых содержат сам запрос, вместо каждого файла, содержащего запрос в каталогах, ведущих к нему, вы можете включить -b
флаг для поиска только тех файлов, чье «базовое имя» соответствует запросу:
locate -b query
Чтобы locate
возвращались только те результаты, которые все еще существуют в файловой системе (имеются в виду файлы, которые не были удалены между последним updatedb
вызовом и текущим locate
вызовом), используйте -e
флаг:
locate -e query
Вы можете получить статистику о locate
каталогизированной информации, используя -S
опцию:
locate -S
Output
Database /var/lib/mlocate/mlocate.db: 21015 directories 136787 files 7727763 bytes in file names 3264413 bytes used to store database
Это может быть полезно для получения общего представления о том, сколько файлов и каталогов существует в вашей системе.
Вывод
Обе команды find
и locate
являются полезными инструментами для поиска файлов в вашей системе. Обе являются мощными командами, которые можно усилить, комбинируя их с другими утилитами через конвейеры, но вам решать, какой инструмент подходит для вашей конкретной ситуации.
Отсюда мы рекомендуем вам продолжать экспериментировать с find
и locate
. Вы можете прочитать их соответствующие man
страницы, чтобы узнать о других параметрах, не описанных в этом руководстве, и вы можете анализировать результаты поиска и управлять ими, перенаправляя их в другие команды, такие как wc
, sort
и grep
.
Для начала работы в терминале Linux не нужно быть гуру администрирования — достаточно знать список базовых команд для навигации и работы с файлами и папками.
- Навигация
- Поиск
- Работа с папками
- Работа с файлами
- Переименование, перемещение и копирование
Навигация
После подключения к серверу вы оказываетесь в домашней папке пользователя. Чтобы узнать точный путь к вашему текущему местонахождению, воспользуйтесь командой:
pwd
Она выведет текущую рабочую директорию (print working directory).
Если вам нужно перейти в другую папку, для этого используется команда cd
(change directory) с указанием пути к нужной вам папке:
cd /home
Говоря о навигации, нельзя не упомянуть сокращения для обозначения некоторых директорий:
/ | корневая папка сервера |
. |
текущая директория, в которой вы сейчас находитесь. Например, чтобы найти файл с именем find . -name hello.txt |
.. |
директория, расположенная на уровень выше текущей. Если вы находитесь в папке cd .. |
~ |
домашняя папка текущего пользователя. Например, запустить скрипт sh ~/some-script.sh |
– |
предыдущая посещённая директория. Представим, что вы перешли в папку cd - |
Для навигации с помощью команды cd
есть два формата указания пути к нужной папке: абсолютный и относительный.
Абсолютный путь — это полный путь от корневой папки сервера «/»
. Например, вот такой:
/var/www/data/username/data/www/example.com/
Также к абсолютным относятся пути, в которых используется ~
— указание на домашнюю папку текущего пользователя. Например, при доступе к файлу ~/.bash_profile
он всегда будет открываться из одного и того же места: вместо ~
будет использоваться значение переменной окружения $HOME, которое не меняется.
Относительный путь — это неполный путь. Он указывается относительно какого-то объекта: например, текущей рабочей директории. То есть в начале отсутствует символ корневой папки «/»
.
./docs/files/file.txt file.txt
Представим, что мы сейчас работаем с файлами в папке /var/www/data/username
. Нам нужно отредактировать содержимое в директории на уровень выше — /var/www/data
. Чтобы управлять данными в этой папке, нам не обязательно постоянно указывать полный путь к ним — можно работать с относительным, начиная его с «../»
.
Также относительные пути используются, когда нужно выполнить операцию над файлом или папкой в директории, в которой мы сейчас работаем. Для выполнения команды достаточно указать имя файла или папки — система поймёт, что мы имеем в виду файл из текущего каталога.
Чтобы отобразить список содержимого папки, можно использовать команду ls
(list). Если дополнить её ключами -al
, она покажет типы данных, разрешения и скрытые файлы. Следующий пример покажет названия файлов и папок текущей рабочей папки:
ls
А этот выведет в терминал подробный список содержимого папки /etc:
ls -al /etc
Чтобы немного упростить себе жизнь, можно использовать консольные файловые менеджеры, например, mc
.
-
Ubuntu и Debian:
apt -y install mc
-
CentOS:
yum -y install mc
Его особенность — примитивный графический интерфейс. Он позволяет быстро ориентироваться в структуре каталогов, перемещаться между ними, создавать новые директории. Интерфейс разбит на два окна, между которыми вы можете перемещать файлы и папки. Помимо прочего, в нём можно работать и с помощью мыши — перемещаться двойным кликом по папкам, использовать кнопки в нижней части панели.
Поиск
С помощью команды find
можно найти на сервере папку или файл по набору условий. Структура команды проста:
find [где искать] [как искать] [что искать]
Например, мы знаем название файла hello.txt
, но не знаем, где именно на сервере он лежит. Найти его поможет конструкция:
find / -name "hello.txt"
/
указывает, что искать надо, начиная с корневой папки сервера. Если вам известно, где может лежать искомый файл, можно задать путь точнее.-name
указывает, что искать надо строго по имени."hello.txt"
— имя файла, который нам нужно найти. Если известна только часть имени, можно указать сокращённый вариант:"hello*"
,"*.txt"
Кроме -name
, команда find
имеет множество опций, которые позволяют уточнить условия поиска подробнее. Вот список наиболее полезных параметров:
|
Позволяет указать тип искомых данных: |
|
Позволяет вывести файлы с определённым уровнем доступа. Например, – |
|
Отображает только пустые файлы или папки |
|
Позволяет искать данные среди файлов, принадлежащих конкретному пользователю: |
|
Позволяет искать данные среди файлов, принадлежащих определённой группе пользователей: |
|
Позволяет задать условие относительно времени изменения файлов:
|
|
Позволяет задать условие относительно времени последнего доступа к файлу, аналогично |
|
Позволяет уточнить размер (или диапазон размера) искомых файлов |
|
Позволяет применить к найденным файлам команду |
Больше информации о возможностях find
можно узнать в файлах документации:
man find
Из встроенных инструментов поиска можно также отметить утилиту whereis
. Она предназначена для поиска бинарных и системных файлов и директорий служб. Следующий пример выведет список всех файлов и папок, имеющих прямое отношение к php
:
whereis php
Работа с папками
Для создания новых директорий используется команда mkdir
с указанием пути до создаваемой папки. Пример ниже создаст папку /new
в существующей директории /home/user
:
mkdir /home/user/new
Если нужно создать сразу несколько вложенных папок, можно использовать параметр -p
. В таком случае все несуществующие директории, указанные в пути, будут созданы автоматически. Представим, что нам нужно создать вложенные папки docs/photos/2020-08-17
в текущей директории — это будет выглядеть так:
mkdir -p docs/photos/2020-08-17
Если нужно создать несколько папок за раз, можно просто перечислить их через пробел:
mkdir docs pictures games
Удалить папку можно с помощью команды rmdir
с указанием пути. Папка будет удалена только в случае, если она пуста (можно использовать параметр --ignore-fail-on-non-empty
, чтобы удалить папку в любом случае). Для удаления нескольких вложенных папок можно аналогично использовать параметр -p
. Пример ниже удалит папку /photos
и все каталоги внутри неё:
rmdir -p docs/photos
Для удаления есть более эффективный инструмент, rm
, про который расскажем ниже.
Работа с файлами
Создание
В терминале есть несколько способов создания новых файлов.
Самый простой, одновременно создающий и файл, и недостающие папки — команда touch
. Достаточно передать ей полный путь к файлу. Для примера создадим в папке docs
папку copies
, а внутри неё — файл copies-list.txt
:
touch docs/copies/copies-list.txt
Несуществующая папка copies
создастся автоматически.
Если нужно создать сразу несколько файлов, можно просто перечислить их через пробел:
touch file1.txt file2.txt file3.txt
Ещё один способ создания новых файлов — вызвать какой-нибудь консольный текстовый редактор с указанием полного пути к файлу. Однако все папки придётся создать заранее. Тогда редактор автоматически создаст файл и откроет его для редактирования. Если не сохранить файл в редакторе, даже пустой, он не будет создан. Команда ниже добавит новый файл с помощью редактора vi
:
vi new-file.txt
Для сохранения и выхода из файла в vi
нужно нажать клавишу Esc, ввести сочетание :wq и нажать Enter. Для выхода без сохранения нужно также нажать Esc, ввести сочетание :q! и нажать Enter.
Ещё пара способов создания пустых файлов:
cat > new-file.txt echo > new-file.txt
Редактирование
Для редактирования файлов используются консольные текстовые редакторы. Самые известные — vi
и nano
. В некоторых дистрибутивах vi
заменён на vim
(vi
improved, улучшенный vi
) или vim.tiny
Редактор vi
будет доступен вам по умолчанию на большинстве Linux-систем.
А теперь к делу. Vi
(более известен как Vim) — старый, очень гибкий и при этом не очень простой в плане управления редактор. Собственно, так он и попал в популярные программистские и админские шуточки.
Запуск редактора без аргументов откроет его в режиме справки:
vi
Чтобы закрыть Vim (без сохранения), введите сочетание :q!
Если указать редактору путь к файлу, он откроет его для редактирования. Если файл не существовал, он будет создан:
vi new-file.txt
При первом входе Vim открывает файл в режиме просмотра. Он не позволяет редактировать его содержимое, но можно вводить командные последовательности, перемещаться по тексту, выполнять поиск и пр.
Чтобы начать ввод, нужно перейти в режим редактирования с помощью клавиши I. Чтобы вернуться в режим просмотра, нажмите Esc.
Перемещение по тексту выполняется с клавиатуры:
- перемещение в начало текста: Esc + дважды G
- перемещение в конец текста: Shift + G
- перемещение по строке горизонтально: стрелки ← →
- перемещение по строкам вертикально: стрелки ↑ ↓
- отображение номеров строк: Esc, введите
:set number
, нажмите Enter - перемещение по номерам строк: Esc, введите
:
номер строки, нажмите Enter
Для выхода с сохранением файла нажмите Esc и введите :wq!
Текстовый редактор vim — краткое руководство
Более современной и удобной альтернативой Vim считается редактор nano
. Современные дистрибутивы включают его по умолчанию, но на ранних версиях устанавливать придётся вручную:
-
Ubuntu и Debian:
apt -y install nano
-
CentOS:
yum -y install nano
Вызов nano
без аргументов откроет пустой редактор. Можно начать ввод (при сохранении вам будет предложено указать имя и сохранить файл) или вызвать режим помощи со списком доступных команд с помощью сочетания Ctrl+G.
Для сохранения файла нажмите Ctrl+O — редактор предложит ввести имя файла: введите имя и нажмите Enter. Если файл существовал, и имя изменять не требуется, просто нажмите Enter.
Для выхода из редактора нажмите Ctrl+X.
Чтение
Бывает, что нам нужно получить какую-то информацию из файла без необходимости редактировать его. В таком случае необязательно использовать текстовый редактор — есть более простые инструменты.
Команда cat
позволяет вывести в терминал всё содержимое файла, который указан в качестве аргумента:
cat example.txt
Однако, если мы заведомо знаем, что в файле большой объём информации, нет смысла выводить его целиком. Например, команды head
и tail
могут вывести часть содержимого с начала или конца файла соответственно. Если добавить к ним ключ -n
, можно уточнить, сколько строк текста нужно вывести:
head -n 3 example.txt
tail -n 3 example.txt
Помимо прочего, команда tail
очень удобна для чтения логов с ключом -f
. В таком режиме она открывает файл в режиме ожидания и выводит все добавляемые данные. Пригодится для тестирования или дебаггинга.
Иногда нам всё-таки нужно полностью просмотреть файл. При этом читать его вывод в терминале неудобно. На такие случаи есть команда less
— она открывает файл (или переданный в неё вывод другой команды) в режиме чтения:
less example.com
В режиме чтения less
можно перемещаться, искать текст и многое другое. Все командные последовательности и горячие клавиши можно вывести с помощью параметра --help
:
less --help
Для выхода из режима чтения введите q и нажмите Enter.
Удаление
Для удаления файлов используется команда rm
. Она крайне опасна — неправильное применение грозит удалением всего содержимого сервера. Поэтому, как говорится, семь раз отмерь, один раз отрежь: категорически важно перепроверять путь, который вы указываете для удаления.
Самая простая версия rm
удалит файл с предварительным подтверждением — для этого потребуется ввести y и нажать Enter:
rm new-file.txt
Для полного же уничтожения всего и вся к команде добавляются параметры -rf
. Первый отвечает за рекурсивное удаление данных (т.е. удаление вложенных файлов и папок), второй позволяет отключить подтверждение при удалении. Например, следующая команда удалит папку photos
, размещённую в папке docs
, и всё её содержимое:
rm -rf docs/photos
Для шуток над неопытными администраторами им под тем или иным предлогом предлагают выполнить команду rm -rf [/]
(без квадратных скобок). Она удаляет всё содержимое сервера от корня. Результат — все данные безвозвратно теряются, а сервер перестаёт работать.
Скачивание и загрузка
Для передачи файлов на сервер и с сервера есть много способов. Самые простые — использование wget
, curl
или scp
.
-
wget
позволяет скачивать данные на сервер. Он поддерживает HTTP, HTTPS и FTP протоколы.wget [как скачать] [откуда скачать]
Скачать файл по ссылке в вашу текущую рабочую директорию можно с помощью команды:
wget https://ru.wordpress.org/latest-ru_RU.tar.gz
С помощью параметра
-P
можно указать путь, куда нужно сохранить скачиваемый файл:wget -P /var/www/example.com https://ru.wordpress.org/latest-ru_RU.tar.gz
Полный список параметров
wget
можно посмотреть в справочной информации:man wget
-
curl
используется как для скачивания файлов на ваш сервер, так и для передачи данных с него на другие серверы / хранилища. Он универсальнееwget
благодаря огромному количеству поддерживаемых протоколов: FTP, HTTP, HTTPS, IMAP, POP3, SCP, SFTP, SMB, SMTP, Telnet и др.curl [как скачать] [откуда скачать / куда загрузить]
В современных дистрибутивах
curl
установлен по умолчанию. При необходимости установить его вручную можно следующим образом:- Ubuntu и Debian:
apt -y install curl - CentOS:
yum -y install curl
Для работы с
curl
нужно знать название и расположение файлов, которые необходимо скачать/загрузить. Например, так будет выглядеть команда на скачивание файла по ссылке:curl -O https://ru.wordpress.org/latest-ru_RU.tar.gz
В примере мы скачиваем архив
latest-ru_RU.tar.gz
по ссылке и сохраняем его в текущую рабочую директорию с таким же именем — за это отвечает ключ-O
. Если использовать опцию-o
, можно задать своё имя (wp.tar.gz
) для сохраняемого файла:curl -o wp.tar.gz https://ru.wordpress.org/latest-ru_RU.tar.gz
Если нам нужно загрузить файл c нашего сервера на другой, используется следующая конструкция:
curl -T filename.txt https://example.com/downloads/filename.txt
Здесь файл
filename.txt
из текущей рабочей директории загружается на сайтexample.com
в папкуdownloads/
и сохраняется с именемfilename.txt
. Пример подразумевает, что у нас есть права на запись в указанный каталог.Остальные возможности
curl
можно узнать в справочной информации:man curl
- Ubuntu и Debian:
-
Утилита
scp
позволяет копировать файлы между двумя серверами, используя протокол SSH.scp [где взять файлы] [куда их загрузить]
Например, для передачи файла
filename.txt
с нашего сервера на удалённый сервер1.2.3.4
в папкуnew-documents
пользователяusername
можно использовать следующую команду:scp ~/documents/filename.txt username@1.2.3.4:/home/username/new-documents
В процессе система запросит у нас пароль пользователя
username
для подключения к удалённому серверу. После авторизации файл будет скопирован на целевой сервер в указанную папку.Чтобы скачать файл с удалённого сервера, достаточно немного видоизменить нашу команду:
scp username@1.2.3.4:/home/username/documents/filename.txt ~/new-documents/
Здесь мы в качестве источника для получения копии файла указали удалённый сервер, а в качестве цели для загрузки копии — папку на текущем сервере.
С помощью
scp
аналогичным образом можно копировать данные между двумя удалёнными серверами:scp username1@1.2.3.4:/home/username1/documents/filename.txt username2@2.3.4.5:/home/username2/new-documents
Запуск исполняемых bash-скриптов
Чтобы запустить скрипт script.sh
на сервере, нужно выполнить два шага:
-
Настроить права на запуск файла для пользователей:
chmod +x ./script.sh
-
Запустить скрипт. Если вы находитесь в той же директории, где лежит скрипт, достаточно вызвать его по имени:
./script.sh
В некоторых случаях нужно использовать команду
sh
либо указать путь к исполняемому файлу командной оболочки:sh ./script.sh
либо
/bin/bash ./script.sh
Если вы находитесь в другой директории, для запуска нужно указать полный путь к скрипту.
Чтобы иметь возможность запускать скрипт из любого места на сервере одной простой командой, можно создать для него алиас — короткую команду (псевдоним), которая будет ассоциироваться системой с полным вызовом скрипта.
Весь список существующих алиасов системы можно вывести с помощью команды alias
:
Создать свой постоянный алиас можно с помощью файла .bashrc
, размещённого в домашнем каталоге вашего пользователя. Нужно открыть его для редактирования:
vi ~/.bashrc
В соответствующем разделе нужно добавить ваш алиас в следующем формате:
alias [короткая команда]='[исходная команда]'
Например, если нам потребуется создать псевдоним для скрипта выше, настройки будут выглядеть так:
alias myScript='sh /путь/к/скрипту/script.sh'
Чтобы после добавления алиас сразу стал доступен, предварительно нужно обновить командную оболочку:
source ~/.bashrc
После этого вы сможете вызывать ваш скрипт с помощью короткой команды.
Скрипт можно добавить в расписание планировщика cron
, чтобы он запускался регулярно.
Как настроить cron по ssh
Переименование, перемещение и копирование файлов и папок
Скопировать файл в терминале можно с помощью команды:
cp [что копируем] [куда копируем]
C её помощью можно, к примеру, создать копию конфигурационного файла, который вы хотите изменить. Здесь мы создаём копию конфигурационного файла nginx.conf
cp nginx.conf nginx.conf.copy
Папки копируются аналогично. При необходимости скопировать каталог со всем содержимым (рекурсивно) можно добавить к команде ключ -r
:
cp -r /docs /files
Здесь мы создаём копию папки docs
со всем её содержимым с именем files
.
Переместить или переименовать файл также просто:
mv [что переместить/переименовать] [куда переместить/как назвать]
Например, следующая команда переместит файл file.txt
в папку new
:
mv file.txt docs/new
Переименовать файл не сложнее:
mv /docs/new/file.txt /docs/new/todolist.txt
В этом примере файл file.txt
переименовывается в todolist.txt
Аналогично можно перемещать и переименовывать директории.
Теперь, когда вы можете перемещаться по серверу и работать с файлами и папками, самое время познакомиться с файловой структурой Linux-систем.
Структура каталогов Linux
Поддерживая сайты, не редко приходится восстанавливать их работоспособность из-за не осторожных действий заказчика или его работников. Вариантов того, что можно сломать, масса и зачастую возникает необходимость отыскать какие файлы поменяли на сервере. С этой задачей всегда помогает справиться команда find
. О ней сегодня и пойдет речь.
Если проблема не с базой данных, то nix-овая команда поиска приходится как-никогда кстати. Разберем несколько полезных примеров. Найти файлы, которые были модифицированы в последние 30 минут в директории /path/to/directory
:
find /path/to/directory -type f -mmin -30
Тоже самое, но для директорий:
find /path/to/directory -type d -mmin -30
Когда проблема случилась не прямо сейчас, а несколько дней назад, то указывать удобнее будет указать не минуты, а дни. В этом случае команды преобразится в
find /path/to/directory -type f -mtime -3
Теперь случай посложнее. Правки кода осуществлялись позавчера, а вчера и сегодня загружались только работоспособные файлы. Тогда в команду поиска добавляется диапазон. Следующая команда выведет все измененные файлы за 3 дня, но не включит данные за последний день:
find /path/to/directory -type f -mtime -3 ! -mtime -1
Для удобства поиска можно добавить в команду вывод времени модификации и сортировку по нему. Тогда последняя команда примет вид
find /path/to/directory -type f -mtime -3 ! -mtime -1 -printf '%TY-%Tm-%Td %TT %pn' | sort -r
Для ограничения уровня вложенности, добавьте параметр -depth
. Например, поиск с уровнем вложенности не более 2 папок
find /path/to/directory -type f -mmin -30 -depth -2
Советую ознакомиться с полным списком команд. В этом вам поможет интернет, man find
или find --help
.
P.S. Поиск по дате модификации файла бывает полезен при поиске вредоносного кода, поэтому рекомендую запомнить эти команды или добавить ссылку в закладки.
- 2016-01-25 20:38:29
SSH позволяет управлять аккаунтом напрямую на сервере. С его помощью можно собрать полную информацию о занятом дисковом пространстве и количестве файлов, а также, например, импортировать объемный дамп базы данных, работать с системой контроля версий git и проектами на Node.JS или Python.
После подключения вы увидите приглашение командной строки: [username@server ~]$
- username — логин вашего аккаунта на хостинге;
- server — имя сервера, на котором он размещен.
Для работы требуется знание команд. Они выглядят так: command -key argument
- command — название команды;
- -key — дополнительные опции (ключи);
- argument — значение, с которым будет работать команда (путь до папки, фраза, которую нужно найти и т.д.).
Рекомендуем прочитать справочную информацию для команды, которую вы планируете использовать, введя в консоли man. Обратите внимание, справочник англоязычный.
Например, откроем руководство для ls: [username@server domains]$ man ls
Чтобы выйти из режима справки, нажмите «q».
Команды для работы с файлами
ls — просмотр содержимого каталога
Команда выводит перечень видимых файлов и папок: [username@server domains]$ ls
domain.ru site.ru
Чтобы получить полную информацию о содержимом каталога, пригодятся ключи:
- -l — вывести подробную информацию о файле;
- -a — отобразить скрытые файлы;
- -h — отобразить размер файла в удобном формате (по умолчанию выводится в байтах).
[username@server domains]$ ls -lah
итого 16K
drwxr-xr-x. 4 username username 4,0K янв 23 12:11 .
drwx--x---. 4 username service 4,0K дек 25 18:45 ..
drwxr-xr-x. 3 username username 4,0K дек 3 07:01 domain.ru
drwxrwxr-x. 3 username username 4,0K янв 23 12:12 site.ru
pwd — показать полный путь до директории
Команда выводит полный путь до каталога, в котором вы находитесь: [username@server domains]$ pwd
/home/username/domains
cd — переход по директориям
Для перехода между каталогами используйте команду cd. В качестве аргумента укажите путь до папки, куда нужно переместиться: [username@server ~]$ cd domains/domain.ru/public_html/ // Переходим в каталог domains/domain.ru/public_html/ .
// Проверяем:
[username@server public_html]$ pwd // Выводим путь до текущего каталога.
/home/username/domains/domain.ru/public_html // Готово. Переход осуществлен.
Чтобы перейти на уровень вверх относительно текущего каталога, введите cd ..: [username@server public_html]$ cd ..
[username@server domain.ru]$ pwd // Выводим путь до текущего каталога.
/home/username/domains/domain.ru // Мы перешли на уровень выше.
cd – — шаг назад (вернуться к предыдущему каталогу): [username@server domain.ru]$ cd -
/home/username/domains/domain.ru/public_html // Перешли к каталогу public_html, где были ранее.
cd (без параметров) — перейти в домашний каталог: [username@server public_html]$ cd
[username@server ~]$ pwd // Выводим путь до текущего каталога.
/home/username // Вернулись в домашний каталог пользователя username.
mkdir — создание папки
Команда имеет вид: mkdir путь_до_каталога, где «путь_до_каталога» — путь к создаваемой папке, в конце указывается ее имя.
Например: [username@server ~]$ mkdir domains/site.ru/example // Создаем каталог example по пути domains/site.ru/.
Если вы создаете каталог в том же месте, где находитесь, полный путь указывать не нужно: [username@server ~]$ cd domains/site.ru/ // Переходим в каталог site.ru.
[username@server site.ru]$ mkdir example2 // Создаем каталог example2 в текущем каталоге.
// Проверяем:
[username@server site.ru]$ ls // Выводим список файлов.
example2 public_html // Каталог example2 создан.
touch — создание файла
touch создаёт пустой файл с именем и расширением, которое вы укажете, или обновляет дату модификации существующего файла: [username@server domains]$ touch example.txt // Создаем файл example.txt в текущем каталоге.
// Проверяем:
[username@server domains]$ ls // Выводим список файлов.
example.txt // Файл example.txt создан.
rm — удаление папок и файлов
Для удаления файла достаточно указать путь до него: [username@server public_html]$ rm example.txt
Чтобы удалить директорию, используйте ключи -r (рекурсивно) и -f (без подтверждения): [username@server public_html]$ rm -rf example1
Очистить текущий каталог от всех файлов и папок можно с помощью команды: [username@server public_html]$ rm -rf *
cp — копирование файлов/папок
В качестве аргументов для команды укажите сначала полный путь до файла, который нужно скопировать, и через пробел полный путь до каталога, куда будет произведено копирование.
Чтобы скопировать папку со всем ее содержимым, укажите ключ -r (рекурсивно): [username@server]$ cp -r /home/username/domains/site.ru/public_html/example /home/username/domains/domain.ru // Копируем папку example из domains/site.ru/public_html в domains/domain.ru.
Если вы находитесь в том же каталоге, где и объект, который нужно скопировать, полный путь до него указывать не нужно: [username@server public_html]$ cp -r example2 /home/username/domains/domain.ru // Копируем папку example2 из domains/site.ru/public_html в domains/domain.ru.
// Проверяем:
[username@server public_html]$ cd /home/username/domains/domain.ru // Переходим в каталог domains/domain.ru.
[username@server domain.ru]$ ls // Выводим список файлов.
example2 public_html // Папка скопирована.
mv — перемещение или переименование файлов и папок
Синтаксис команды mv такой же как, и у cp (копирование). Укажите сначала полный путь до файла, который нужно перенести, а затем путь до каталога, куда будут перемещены данные.
Пример: [username@server domain.ru]$ mv primer.txt /home/username/domains/site.ru/public_html // Переносим файл primer.txt из domains/domain.ru/ в domains/site.ru.
//Проверяем:
[username@server domain.ru]$ ls // Выводим список файлов в каталоге domain.ru.
example2 public_html // Проверяем, что в списке нет файла primer.txt.
[username@server domain.ru]$ cd /home/username/domains/site.ru/public_html // Переходим в каталог domains/site.ru/public_html.
[username@server public_html]$ ls // Выводим список файлов.
primer.txt // Файл перенесен.
Чтобы переименовать файл, введите сначала текущее имя, а затем — новое: [username@server public_html]$ ls // Выводим список файлов в текущем каталоге.
example.txt
[username@server public_html]$ mv example.txt primer.txt // Изменяем имя example.txt на primer.txt.
// Проверяем:
[username@server public_html]$ ls // Выводим список файлов.
primer.txt // Файл переименован.
wget — получение файлов со сторонних сайтов
Скачивайте файлы на ваш аккаунт хостинга со сторонних ресурсов с помощью утилиты wget.
Wget работает с протоколами HTTP, HTTPS и FTP. С ее помощью удобно скачивать архивы, установочные пакеты в нужную директорию на дисковом пространстве аккаунта. Чтобы начать процесс закачки, выполните команду: [username@server ~]$ wget http://domain.ru/archive.zip
scp — передача файлов с компьютера
Команда scp поможет передать файлы с вашего устройства на unix на аккаунт. Заранее устаналивать соединение по SSH для использования этой утилиты не нужно. Выполните команду: [user@mycomputer ~] $ scp /home/user/desktop/file.txt username@domain.ru:domains/domain.ru/public_html
Здесь /home/user/desktop/file.txt — путь до файла на копьютере, username@domain.ru — логин аккаунта на хостинге и доменное имя или IP-адрес сервера, domains/domain.ru/public_html — путь до директории, куда нужно загрузить файл.
Чтобы передать каталог, используйте ключ -r (рекурсивно):
[user@mycomputer ~] $ scp -r /home/user/desktop/folder username@domain.ru:domains/domain.ru/public_html
du — получение информации о занятом дисковом пространстве
По умолчанию команда выводит информацию о весе каждого каталога и подкаталога в байтах и пути до них: [username@server domains]$ du
4 ./site.ru/example
4 ./site.ru/public_html
12 ./site.ru
20 ./domain.ru
36 .
Чтобы читать результат работы команды было проще, добавьте ключи:
- -s — вывести общий объем каталога;
- -h — отобразить размер файла в удобном формате (Кб, Мб или Гб).
В качестве аргумента укажите символ «*»: команда посчитает размер каждого каталога и файла в директории: [username@server ~]$ du -sh *
70M domains
4,0K example2
4,0K tmp
12K username_wor00.sql.bz2.gz
16K username_wor1.sql
find — поиск файлов/папок
Команда имеет вид: find путь_до_каталога -ключи , где «путь_до_каталога» — папка, с которой начинается поиск.
Рекомендуем ознакомиться с руководством (man) для find, так как она обладает обширным набором ключей. Мы рассмотрим основные:
- -name — поиск файлов, имена которых соответствуют заданному шаблону;
- -type — поиск файлов определенного типа:
- f — обычный файл;
- d — каталог;
- l — символическая ссылка.
Примеры
Найти все файлы с расширением .php в текущем каталоге (обозначается символом «.») и подкаталогах: [username@server ~]$ find . -name "*.php"
Найти все файлы с расширением .php, а также файлы, имена которых начинаются с точки в каталоге public_html: [username@server ~]$ find ./public_html -name "*.php" -o -name ".*"
Найти все каталоги, имена которых начинаются с «w» в текущей папке: [username@server ~]$ find . -name "w*" -type d
Количество файлов
С помощью find можно посчитать количество файлов на аккаунте. Выполните команду: [username@server ~]$ find . | wc -l
grep — поиск файлов по их содержимому
Команда имеет вид: grep “текст” путь_до_файла, где «текст» — информация, которую нужно найти, «путь_до_файла» — путь к файлу, по которому производится поиск.
Узнаем с помощью grep, какая база данных используется сайтом: [username@server domain.ru]$ grep "username_" -R // username_ — начало имени базы данных. Замените «username» на логин вашего аккаунта, -R — рекурсивный поиск.
public_html/example.php:define('DB_NAME', 'username_wor00');
public_html/example.php:define('DB_USER', 'username_wor00');
stat — подробная информация о файле
Выполните команду stat, чтобы узнать, когда файл был создан и изменялся: [username@server public_html]$ stat example.php
Файл: «example.php»
Размер: 3317 // Размер в байтах.
Inode: 57804829 // Уникальный индексный дескриптор.
Доступ: (0644/-rw-r--r--) // Права доступа.
Uid: ( 3645/username) // ID и имя владельца.
Gid: ( 3646/username) // ID и имя группы владельца.
Доступ: 2018-01-23 12:03:21.829402333 +0300 // Дата последнего обращения.
Модифицирован: 2017-12-20 13:34:11.831201546 +0300 // Дата внесения последних изменений в содержимое файла.
Изменён: 2018-01-23 12:03:41.231474591 +0300 // Дата последнего изменения имени файла или прав доступа.
ln — создание ссылки на файл
Чаще всего применяется для создания символических ссылок (ярлыков). Используйте их, если необходимо, например, изменить путь до корневой директории сайта.
Команда имеет вид: ln -s исходный_файл целевой_файл, где «целевой_файл» будет ссылкой на «исходный_файл». Всегда указывайте полный путь к исходному файлу: [username@server domains]$ ln -s /home/username/domains/domain.ru/public_html/example1 /home/username/domains/site.ru/public_html/example2
// Проверяем:
[username@server domains]$ ls -la site.ru/public_html/example2 // Выводим полную информацию о каталоге example2.
1 username username 53 янв 23 12:14 example1 -> /home/username/domains/domain.ru/public_html/example1
Для удаления символической ссылки перейдите в каталог, где сохранен «целевой_файл» и удалите созданный ярлык: [username@server public_html]$ cd /home/username/domains/domain.ru/public_html/ // Переходим в каталог, где расположена папка example1.
[username@server public_html]$ ls -la // Проверяем наличие символической ссылки: выводим полную информацию о каталоге.
drwxrwxr-x. 2 username username 4096 янв 23 12:08 example1
lrwxrwxrwx. 1 username username 53 янв 23 12:09 example2 -> /home/username/domains/domain.ru/public_html/example1
[username@server public_html]$ rm example2 // Удаляем ярлык.
[username@server public_html]$ ls -la // Еще раз выводим список файлов и проверяем, удалена ли символическая ссылка.
drwxrwxr-x. 2 username username 4096 янв 23 12:08 example1
сhmod — изменение прав доступа
Изменить права на файл или папку можно с помощью команды chmod xxx путь_до_файла , где xxx – права, «путь_до_файла» — путь до папки или файла. Чтобы изменить права и на папку, и на ее содержимое, добавьте ключ -R (рекурсивно).
Пример
[username@server domains]$ chmod -R 777 /home/username/example2 // Устанавливаем права 777 для папки example2 и ее содержимого.
// Проверяем:
[username@server ~]$ stat example2 // Смотрим статус.
Файл: «example2»
Доступ: (0777/drwxrwxrwx) // Права для каталога example2 изменены на 777.
[username@server ~]$ cd example2/ // Переходим в example2.
[username@server example2]$ ls // Выводим содержимое каталога.
copytest.txt example1
[username@server example2]$ stat copytest.txt // Смотрим статус файла copytest.txt.
Файл: «copytest.txt»
Доступ: (0777/-rwxrwxrwx) // Права доступа к файлу изменены на 777.
mc — Midnight Commander
Midnight Commander — файловый менеджер с текстовым интерфейсом, встроенный в консоль. Для запуска введите в команду mc.
Работа с базами данных
mysql — подключение к базе данных
Процесс подключения к базе данных с помощью команды mysql мы описали в статье.
Импорт дампа базы данных
mysql позволяет импортировать дамп базы данных, загруженный на дисковое пространство аккаунта. Выполните команду: [username@server domains]$ mysql -u db_username -p db_name < dump_name.sql
где
- db_username — имя пользователя базы данных;
- db_name — название базы;
- dump_name.sql — имя дампа.
mysqldump — экспорт дампа БД
Чтобы выгрузить дамп на дисковое пространство аккаунта выполните команду: [username@server domains]$ mysqldump -u db_username -p db_name > dump_name.sql
Он будет помещен в каталог, из которого выполнялось действие.
Работа с архивами
Выбор команды для распаковки архива зависит от формата, в котором он создан: [username@server domains]$ unzip archive.zip
[username@server domains]$ unrar x archive.rar
[username@server domains]$ tar xf archive.tar
[username@server domains]$ tar xfz archive.tar.gz
[username@server domains]$ gunzip archive.gz
[username@server domains]$ 7za x archive.7z
Особенности
Для команды rar обязательно укажите параметр «x», чтобы сохранить структуру.
gunzip распаковывает файлы, после чего удаляет архив. Если нужно его сохранить, создайте копию на дисковом пространстве аккаунта.
Создать архив можно в формате .zip или .tar: [username@server domains]$ tar cf archive.tar directory/ // Помещаем каталог directory в архив archive.tar.
Он будет сохранен в каталоге, где выполнялась команда.
[username@server domains]$ zip -r archive directory // Помещаем каталог directory в архив archive.zip.// Проверяем:
[username@server domains]$ ls // Выводим список файлов.
archive.tar archive.zip directory domain.ru example.txt site.ru // Архивы archive.zip и archive.tar созданы.
crontab — планировщик Cron
Настройте выполнение скриптов по расписанию с помощью планировщика Cron. Чтобы добавить новое задание, выполните: [username@server ~]$ crontab -e
Откроется окно текстового редактора vim, нажмите клавишу «i», чтобы внести изменения. Добавьте команду в конец документа. Она состоит из времени выполнения (минута, час, число, месяц, день недели), пути до утилиты и пути до выполняемого скрипта, например: 15 12 * * * /usr/local/bin/wget http://domain.ru/script.php // Скрипт script.php будет выполняться каждый день в 12:15
Выбор интерпретатора зависит от скрипта, который нужно выполнить. Для php-скриптов подойдет php, curl или wget, для Python или Node.js — python или node соответственно.
Чтобы узнать путь до нужного интерпретатора, выполните команду: [username@server ~]$ which php
Сохраните изменения в редакторе vim. Нажмите Esc и введите «:q!»
Вместо php укажите имя интерпретатора.
idn — преобразование домена в Punycode
Чтобы перевести IDN-домен в Punycode, выполните команду: [username@server ~]$ idn домен.рф
Горячие клавиши
Для удобства работы в консоли используйте горячие клавиши.
- clear — очистить окно;
- history — посмотреть список выполненных команд;
- Ctrl+C — остановить выполнение команды;
- Ctrl+D — выйти из системы;
- !! — повторить последнюю команду;
- Tab — автодополнение. Начните вводить имя папки или файла и нажмите Tab — название будет дописано автоматически.