Работа с веб-сервером

В данной статье рассматриваются основные команды, используемые при работе с файлами и директориями при подключении по SSH-протоколу с помощью терминальных программ.

Более подробную справку по каждой из них вы можете получить при помощи man command, где command - название команды, по которой необходимо получить информацию. Выйти из раздела справки можно, нажав на клавишу q.

Навигация

Вывод содержимого директории

Чтобы посмотреть содержимое директории, воспользуйтесь командой ls.

Вывод содержимого текущей директории в несколько колонок (только имена файлов и директорий):

ls

Вывод содержимого текущей директории в одну колонку (только имена файлов и директорий):

ls -1

Вывод подробной информации о содержимом текущей директории, включая скрытые файлы (имя которых начинается с точки):

ls -la

Перемещение между директориями

Команда cd позволяет выполнить переход в другую директорию.

Основные способы применения:

Перейти в директорию, которая находится в текущей директории:

cd название_папки

Перейти в родительский каталог (на уровень выше):

cd ..

Перейти в домашний каталог по абсолютному пути (начиная с корня):

cd /home/u/username

Перейти к папке через относительный путь:

cd ~/site/public_html/

Перейти в предыдущий каталог:

cd -

Действия с файлами и каталогами

Создание директорий

Команда для создания директорий - mkdir.

Пример использования:

username@server:~/test_home/test$ ls -ltotal 0
username@server:~/test_home/test$ mkdir dir1
username@server:~/test_home/test$ ls -l
total 4
drwx------ 2 username customers 4096 Mar 10 13:16 dir1

Создание файлов

Для создания файлов можно использовать различные команды, например:

Создать новый файл при его отсутствии (если файл существует, содержимое файла не изменяется):

touch test.txt

Создать новый файл при его отсутствии и записывает туда строку "test" (если файл существует, то команда заменяет его содержимое на строку "test"):

echo "test" > test.txt

Копирование файлов и каталогов

Копирование каталогов и файлов осуществляется с помощью команды cp.

Основные способы применения:

Скопировать файл test.txt в файл test1.txt (файл test.txt должен присутствовать в текущей директории):

cp test.txt test1.txt

Скопировать директорию dir1 в директорию dir2, включая всё содержимое (ключ -r означает рекурсивное копирование, директория dir1 должна присутствовать в текущей директории):

cp -r dir1 dir2

Копирование файлов с сервера на сервер

заполнить

Перемещение и переименование файлов

Перемещение и переименование файлов выполняется при помощи команды mv.

Основные способы применения:

Переименовать файл test.txt в test2.txt (файл test.txt должен присутствовать в текущей директории):

mv test.txt test2.txt

Переместить файл test2.txt в директорию dir (файл и директория должны присутствовать в текущей директории):

mv test2.txt dir

Удаление файлов и каталогов

Для удаление объектов используйте команду rm.

Основные способы применения:

Удалить файл test.txt:

rm test.txt

Удалить директорию и всё её содержимое:

rm -r имя_директории

Создание ссылок

Ссылки при работе по SSH-протоколу создаются командой ln.

Основные способы применения:

Создать "жёсткую" ссылку:

ln file1 file2

Создать "символьную" ссылку для каталога /bitrix/ в папке сайта /site2/ :

ln -s ~/site1/public_html/bitrix ~/site2/public_html/

Изменение прав доступа к файлам и директориям

Команда chmod позволяет настроить права доступа к файлам и директориям.

Основные способы применения:

Изменение прав на xxxx для файла file (file должен существовать в текущей директории):

chmod xxxx file

Изменение прав на xxxx для директории dir (dir должна существовать в текущей директории):

chmod xxxx dir

Поиск по содержимому grep

grep - это популярная команда, позволяющая найти содержимое файлов.

найти в папке и во всех под папках ~/site/public_html/ все файлы где содержится слово test grep:

grep 'test' -R ~/site/public_html/

Данная команда имеет огромное количество способов применения. За дополнительной информацией вы можете обратиться к официальной документации, либо к свободным источникам в интернете.

grep [ОПЦИИ] ШАБЛОН [ФАЙЛ] .

Ниже предоставлены основные опции утилиты.

-b — показывать номер блока перед строкой -c — Отключает стандартный способ вывода результата и вместо этого отображает только число обозначающее количество найденых строк. -h — не выводить имя файла в результатах поиска внутри файлов Linux -i — не учитывать регистр -l — отобразить только имена файлов, в которых найден шаблон -n — показывать номер строки в файле -s — не показывать сообщения об ошибках -v — инвертировать поиск, выдавать все строки кроме тех, что содержат шаблон -w — Ведет поиск по цельным словам. Например при обычном поиске строки ‘wood’ grep может найти слово ‘hollywood’. А если используется данный ключ то будут найдены только строки где есть слово ‘wood’ -e — использовать регулярные выражения при поиске -An — показать вхождение и n строк до него -Bn — показать вхождение и n строк после него -Cn — показать n строк до и после вхождения -o — показать только совпадающие (непустые) части совпадающей строки, каждая из которых находится в отдельной строке. -P — Интерпретировать шаблон как регулярное выражение Perl. Это экспериментально, и grep -P может предупредить о невыполненных функции. -r — Производит поиск рекурсивно по всем поддиректориям.

Поиск файлов find

Используйте команду find, чтобы найти нужный файл.

Я не буду перечислять здесь все параметры, рассмотрим только самые полезные.

  • -P никогда не открывать символические ссылки

  • -L - получает информацию о файлах по символическим ссылкам. Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.

  • -maxdepth - максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.

  • -depth - искать сначала в текущем каталоге, а потом в подкаталогах

  • -mount искать файлы только в этой файловой системе.

  • -version - показать версию утилиты find

  • -print - выводить полные имена файлов

  • -type f - искать только файлы

  • -type d - поиск папки в Linux

Критериев у команды find в Linux очень много, и мы опять же рассмотрим только основные.

  • -name - поиск файлов по имени

  • -perm - поиск файлов в Linux по режиму доступа

  • -user - поиск файлов по владельцу

  • -group - поиск по группе

  • -mtime - поиск по времени модификации файла

  • -atime - поиск файлов по дате последнего чтения

  • -nogroup - поиск файлов, не принадлежащих ни одной группе

  • -nouser - поиск файлов без владельцев

  • -newer - найти файлы новее чем указанный

  • -size - поиск файлов в Linux по их размеру

Основные способы применения:

Поиск файлов и каталогов с именем "test" в текущей директории:

find ./ -name 'test'

Поиск в текущей директории файлов и каталогов, имена которых начинаются на "test" и далее содержат любое количество любых символов:

find ./ -name 'test*'

Поиск файлов с расширением ".php" в домашней директории:

find ~/ -name '*.php'

Поиск файлов в домашней директории с определенной маской прав, например, 0664:

find ~/ type f -perm 0664

Установка прав доступа 644 на все файлы в текущей директории и всех поддиректориях:

find ./ -type f -exec chmod 644 {} \;

Установка прав доступа 755 на все папки в текущей директории и всех поддиректориях:

find ./ -type d -exec chmod 755 {} \;

Поиск файлов по дате в Linux осуществляется с помощью параметра mtime. Найти все файлы модифицированные 50 дней назад:

find ~/ -mtime 50

Найти все файлы, модифицированные между 50 и 100 дней назад:

 find ~/ -mtime +50 –mtime -100

Поиск файлов по размеру size от 50МБ до 100МБ

find ~/ -size +50M -size -100M

Найти 5 самых больших файлов

 find . -type f -exec ls -s {} \; | sort -n | head -5

Другие вспомогательные команды

Вывод истории команд:

history

Очистить экран (сочетание клавиш Ctrl-L):

clear

Закрыть подключение по SSH (сочетание клавиш Ctrl-D):

exit

Сочетания клавиш:

Ctrl-C - прервать выполнение текущей команды.

Ctrl-Shift-C - копировать выделенный фрагмент (в интерфейсе PuTTY копирование осуществляется простым выделением).

Ctrl-Shift-V - вставить (в интерфейсе PuTTY вставка осуществляется нажатием на правую кнопку мыши).

Копирование файлов с сервера на сервер

Как копировать файлы и папки с удаленного сервера

Например на удаленном сервере несколько каталогов и в каждом каталоге есть много файлов, копируем на локальный сервер (там где находитесь) в папку /home/ . Находимся на первом сервере 192.168.0.1

root@192.168.0.1 [/]# scp -r root@192.168.0.2:/home2/ /home/
после ввода у вас запросит пароль к удаленному серверу.
root@192.168.0.2's password:

т.е. скопируем с удаленного сервера все что находится в каталоге /home2/ к себе в каталог /home/

Параметр: -r – рекурсивное копирование папок (включая подкаталоги);

Как копировать файлы и папки на удаленный сервер

Например вам нужно скопировать несколько каталогов и в каждом каталоге есть много файлов. Находимся на первом сервере root@192.168.0.1

root@192.168.0.1 [/]# scp -r /home/ root@192.168.0.2:/home2/
после ввода у вас запросит пароль к удаленному серверу.
root@192.168.0.2's password:

Полезные команды для работы с архивами, базами данных и процессами

Архивы

Создать архив директории:

tar -cf имя_архива.tar имя_директории

Создать архив bitrix.tar с сжатием gzip исключением папок backup, cache, managed_cache и добавлением файла .htaccess:

tar cfvz bitrix.tar.gz bitrix --exclude "bitrix/backup" --exclude "bitrix/cache" --exclude "bitrix/managed_cache" --add-file ".htaccess"

Процесс создания или распаковки тяжелых архивов может завершаться принудительно в связи с установленными ограничениями на использование процессами процессоров сервера.

В таких случаях для архивирования в .tar вы можете использовать следующую команду, которая позволит ограничить скорость архивации и снизить использование ресурсов процессора.

tar -cf - имя_директории| pv -L 2M > имя_архива.tar

Для удобства команда может быть расширена, чтобы отобразить в консоли счетчик времени, оставшегося до завершения процесса, и вывести уведомление (END) о его завершении (позволит проконтролировать, что процесс не прервался и был выполнен успешно).

tar -cf - имя_директории | pv -L 2M -cN tar -s $(du -sb имя_директории | grep -o '[0-9]*') > имя_архива.tar && echo "END"

Для распаковки большого архива .tar можно воспользоваться командой:

pv -L 2M имя_архива.tar | tar xfv - -C ./имя_директории_назначения

Аналогично для распаковки архивов .tar.gz:

pv -L 1M имя_архива.tar.gz | tar zxfv - -C ./имя_директории_назначения

Распаковка .tar.gz с уведомлением о завершении:

pv -L 1M имя_архива.tar.gz | tar zxfv - -C ./имя_директории_назначения && echo "END"

Распаковать архив .rar в текущую директорию:

unrar x архив.rar

Распаковать архив .zip в директорию /tmp:

unzip архив.zip -d /tmp

Для распаковки тяжелых .zip-архивов:

pv -L 1M имя_архива.zip | unzip-stream имя_директории_назначения

Базы данных

Создание дампа базы данных:

mysqldump -u'имя_пользователя' -p 'имя_базы' > имя_дампа.sql

Импорт данных из дампа в базу данных:

mysql -u'имя_пользователя' -p 'имя_базы' < имя_дампа.sql

Проверка базы данных на наличие ошибок:

mysqlcheck -c -u'имя_пользователя' 'имя_базы' -p

Восстановление базы данных при наличии ошибок:

mysqlcheck -r -u'имя_пользователя' 'имя_базы' -p

Дисковое пространство

Вывести размер файлов и директорий в текущем каталоге:

du -sch *

Анализ дискового пространства в папке имя_директории:

ncdu имя_директории

утилита ncdu

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

Утилита установлена на всех хостинговых серверах, и для ее запуска вам необходимо подключиться по SSH и выполнить команду ncdu. При этом будет просканирован корневой каталог вашего аккаунта.

Если необходимо просканировать и вывести данные конкретной директории, воспользуйтесь командой:

ncdu имя_каталога

Вывод полученных данных имеет приблизительно следующий вид:

Навигация

Навигация по директориям осуществляется с помощью клавиш со стрелками:

и - для перехода между элементами;

(а также клавиша enter) - зайти в выделенную директорию;

- вернуться в предыдущую директорию.

Опции просмотра

По умолчанию папки упорядочены по занимаемому объему, начиная от самого большого. Для изменения типа сортировки нажмите:

n - чтобы упорядочить элементы по имени (в прямом и обратном порядке);

s - чтобы упорядочить элементы по размеру (в прямом и обратном порядке).

Количество символов "#" помогает определить, какие файлы и каталоги занимают больше всего места. Также здесь можно отразить, какой процент от общего объема занимает тот или иной элемент. Для этого используйте:

g - переключение между отображением графика и процентным выражением.

Другие полезные опции:

a - переключение между отображением реального размера файлов и объемом занимаемого пространства на диске;

e - скрыть/показать скрытые файлы и папки;

? - вызвать краткую справку.

Работа с элементами

i - вывести информацию о выбранном элементе;

d - удалить выбранный элемент.

Выход из приложения

q - выйти.

Дополнительно

Также при запуске утилиты можно использовать дополнительные ключи для ncdu:

-h (т.е. команда вида ncdu -h) - вывод краткой справки;

-v - вывод информации о текущей версии ncdu;

-q - "тихий режим", с обновлением каждые 2 секунды (по умолчанию - 10 раз в течение секунды). Тихий режим позволяет снизить объем передачи данных при удаленных подключениях;

-x - учет при сканировании только файлов и директорий одной и той же файловой системы;

-r - режим "только для чтения" (в данном режиме невозможно удаление файлов).

Смена владельца файлов и папок

Иногда при кооптировании файлов и папок с сервера на сервер, копируются и текущие владельцы файлов и папок. Чтобы в итоге ваш сайт запустился на новом сервере нужно сменить владельца и группу.

chown -R Название_владельца:название_группы название_папки

Заходите в рабочую папку проекта и используете команду chown.

-R Использовать рекурсивный метод.

Last updated