В операционных системах на базе Linux посмотреть размер папки (директории) можно с помощью команды du. Эта команда, выполняемая в консоли, позволяет оценить используемый объем места на жестком диске отдельно по папкам и файлам, просуммировать результат, узнать общий размер папки.

Синтаксис

Общий синтаксис команды du следюущий:
du
du имяПапки
du [ключи] имяПапки

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

Без передачи каких-либо параметров команда du выводит название и размер каждой папки по текущему пути, при этом включая в вывод все подкаталоги:

du

Пример вывода:

8       ./share/gegl-0.2/plug-ins
12     ./share/gegl-0.2
16     ./share/rhythmbox
56     ./share/icons/hicolor/16x16/apps
60     ./share/icons/hicolor/16x16
208    ./share/icons/hicolor/256x256/apps
212    ./share/icons/hicolor/256x256
64     ./share/icons/hicolor/48x48/apps
68     ./share/icons/hicolor/48x48
56     ./share/icons/hicolor/32x32/apps
60     ./share/icons/hicolor/32x32
404    ./share/icons/hicolor
408    ./share/icons

Для того, чтобы вывести такую же информацию об определенной папке, укажите её при вызове команды, например:

du ~/.local
du /home

Чтобы получить значения размеров папок в более удобном для восприятия формате, а именно в килобайтах (K), мегабайтах (M) или гигабайтах (G) используйте ключ -h:

du -h
du -h /home

Пример вывода:

8.0K    ./.vim
24K    ./scripts
48K    ./.ssh
16K    ./.keychain
2.2M    ./.lftp
2.4M    .

Для того, чтобы узнать общий размер, который занимает определенная папка вызовите команду du с ключем -s:

du -s /home

Пример результатов:

291210112    /home/

Лучше будет запустить команду du с ключами -s и -h совместно:

du -hs /home

Тогда вывод воспринять легче:

278G /home/

Ключ -c используется для подсчета общей суммы размеров папок так:

du -chs /etc /root/

Результат:

56M /etc
62M /root/
118M итого

Другая удобная опция команды du это ключ —max-depth, который задает глубину папок для просмотра. Если задать глубину равной единице, то можно посмотреть общие размеры всех папок по указанному пути. Выполните:

du -h --max-depth=1

Пример результатов работы:

2.9M    ./.nbi
948K    ./.local
104K    ./.gconf
12K    ./.gnome2
4.0K    ./.gnome2_private
44K    ./.filezilla
356K    ./.cache
12K    ./Desktop
4.0K    ./.gvfs
1.2M    ./.gem
12K    ./.dbus
86M    ./.cpan
26M    ./perl5
1.5M    ./.java
80K    ./.config
16K    ./.ssh
4.0K    ./.pulse
165M    .

Ключи команды du

Ключ Действие
-a, —all Вывести размер для всех файлов, а не только папок
—apparent-size Вывести действительные размеры, а не занимаемое на диске место; хотя действительный размер обычно меньше, иногда он может быть больше из-за дыр в файлах, внутренней фрагментации, косвенных блоков и тому подобного
-B, —block-size=РАЗМЕР Выводить результаты в определенных единицах измерения. Например, -BM выводит размеры в единицах, равных 1,048,576 байтам, т.е. в мегабайтах
-b, —bytes Эквивалентно —apparent-size —block-size=1
-c, —total Выводить общий итог
-D, —dereference-args Следовать только по символьным ссылкам, которые перечислены в командной строке
—files0-from=ФАЙЛ Вывести отчёт об использовании диска, чьи имена файлов перечислены в файле ФАЙЛ
-H Эквивалентен ключу —dereference-args (-D)
-h, —human-readable Выводить размеры в удобном для человека виде (например, 1K 234M 2G)
—si Как -h, но используется делитель 1000, а не 1024
-k Синоним —block-size=1K
-l, —count-links Суммировать размеры, если есть несколько жёстких ссылок на один объект
-m Синоним —block-size=1M
-L, —dereference Следовать по символьные ссылки
-P, —no-dereference Не следовать по символьным ссылкам (по умолчанию)
-0, —null Завершать каждую выводимую строку 0-м байтом, а не символом новой строки
-S, —separate-dirs Не включать размер папок
-s, —summarize Выводить размер только для папки, переданной в качестве аргумента
-x, —one-file-system Оставатся в пределах одной файловой системы
-X, —exclude-from=ФАЙЛ Исключать файлы, совпадающие с каким-либо образцом из ФАЙЛА
—exclude=ОБРАЗЕЦ Исключать файлы, соответствующие ОБРАЗЦУ
-d, —max-depth=N Глубина следования по субдиректориям
—time Показывать время последней модификации всех файлов в каталоге или всех его подкаталогов
—help Показать эту справку и выйти
—version Показать информацию о версии программы du

Как удалить все файлы из каталога?

Чтобы удалить все в каталоге, используйте:

rm /path/to/directory/*

Вы можете использовать -r опцию, например:

rm -r /path/to/directory/*

также удалить любые подкаталоги (вместе со всем их содержимым) внутри каталога, содержимое которого вы удаляете. В противном случае будет отображена ошибка, сообщающая, что каталог не удаляется.

Команда mv

Описание команды mv

mv — переместить (или переименовать) файлы или директории.Команда mv происходит от слова move.

Команда mv используется для перемещения одного или нескольких файлов (или директорий) в другую директорию, а также для переименования файлов и директорий.

Синтаксис

mv опции исходные_файлы куда

исходные_файлы — это то, что мы будем перемещать или переименовывать. То есть это либо один файл, либо несколько файлов, либо директория, либо несколько директорий.

куда — это название директории, в которую мы перемещаем исходные файлы или директории. Или же это новое название файла или директории, если выполняется переименование. То есть это либо директория, либо новое название файла или директории.

Команда mv может:

  • Переместить один или несколько файлов в другую директорию.
  • Переместить одну или несколько директорий в другую директорию.
  • Переименовать файл.
  • Переименовать директорию.

Опции

-b или —backup или —backup=МЕТОДСоздать резервную копию существующих файлов, которые будут перезаписаны или удалены.
Имя для резервной копии может создаваться по определенным правилам. Для этого используется опция —backup=МЕТОД В качестве значения МЕТОД можно указать:

  • none или off — не делать резервных копий, даже если включена опция —backup
  • numbered или t — имя резервной копии получит числовой индекс (пример: myfile.txt~2~).
  • existing или nil — если в директории уже есть резервные копии с числовыми индексами, то использовать числовые индексы для новых резервных копий, во всех остальных случаях использовать метод simple.
  • simple или never — делать обычные резервные копии (пример: myfile.txt~).

-f или —forceПри перезаписи существующих файлов не спрашивать разрешения пользователя.-i или —interactiveПри перезаписи существующих файлов спрашивать разрешение пользователя на подтверждение операции.-n или —no-clobberНе перезаписывать существующие файлы.—strip-trailing-slashesУдалить завершающий символ слеш / (если он там есть) из имени файла-источника.-S СУФФИКС или —suffix=СУФФИКСИзменить символ суффикса, который добавляется к именам резервных копий (при использовании опции —backup). По умолчанию СУФФИКС равен значку тильды ~-t ДИРЕКТОРИЯ или —target-directory=ДИРЕКТОРИЯПереместить все исходные файлы в директорию, которая указана в аргументе опции.-u или —updateПеремещать только если исходный файл новее, чем файл назначения или если файл-назначения отсутствует.-v или —verboseВыводить информацию о каждом файле, который обрабатывает команда mv.-Z или —contextУстановить контекст (метки) SELinux для файлов назначения в значение по умолчанию.—helpПоказать справку по команде mv.—versionПоказать версию утилиты mv.

Примеры использования команды mv

Рассмотрим несколько примеров использования команды mv в Linux.

Рекомендуется всегда использовать опцию -v, чтобы получать информацию о том, что именно команда mv делает с файлами.

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

Переместить файл

Переместим файл myfile1.txt в директорию mydir/ (директория должна существовать). Для этого выполняем команду без каких-либо аргументов:

mv myfile1.txt mydir/

Переименовать файл

Переименуем файл myfile1.txt в myfile2.txt:

mv myfile1.txt myfile2.txt

Переименовать директорию

Переименуем директорию mydir1 в mydir2. Выполняется точно также, как и переименование файлов.

mv mydir1 mydir2

Создавать резервные копии существующих файлов

Предположим, что нам нужно переименовать файл myfile1.txt в myfile2.txt, но файл myfile2.txt уже существует. Можно воспользоваться опцией -b, чтобы создать резервную копию существующего файла:

mv -b myfile1.txt myfile2.txt

В результате сначала существующий файл myfile2.txt будет переименован в myfile2.txt~, то есть будет создана его резервная копия, и только потом файл myfile1.txt будет переименован в myfile2.txt.

Вместо значка тильда ~ можно добавлять к именам резервных копий произвольный суффикс. Например, добавим суффикс .bak. Для этого воспользуемся опцией -S

mv -b -S ".bak" myfile1.txt myfile2.txt

Переместить несколько файлов

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

Переместим сразу три файла в директорию mydir/

mv myfile1 myfile2 myfile3 mydir/

Переместим все файлы из текущей директории в директорию mydir/

mv * mydir/

Переместим все файлы с расширением .jpg в директорию mydir/

mv *.jpg mydir

Переместить только те файлы, которых нет в директории назначения

Предположим, что нам нужно переместить все файлы из одной директории в другую, но если в директории назначения уже есть файлы с такими же именами, то их не перемещать. Для этого используем опцию -n

mv -n mydir1/* mydir2/

Переместить только те файлы, которые новее

Предположим, что нам нужно переместить все файлы из одной директории в другую, но если в другой директории уже есть файлы с такими же именами, то заменять существующие файлы только если исходный файл новее (по дате). Для этого используем опцию -u

mv -u mydir1/* mydir2/

Если в имени файла есть пробелы

Если в имени файла есть пробелы, то имя файла нужно заключить в кавычки или перед каждым пробелом добавлять символ \

Предположим, что нам нужно переименовать файл в имени которого содержится пробел — My file1.txt. Для этого можно заключить имя файла в кавычки (для файла назначения аналогично).

mv "My file1.txt" "My file2.txt"

Или использовать символ косой черты перед пробелом.

mv My\ file1.txt My\ file2.txt

Полезные команды в linux

Чтобы удалить все в каталоге, используйте:

rm /path/to/directory/*

Вы можете использовать -r опцию, например:

rm -r /path/to/directory/*

также удалить любые подкаталоги (вместе со всем их содержимым) внутри каталога, содержимое которого вы удаляете. В противном случае будет отображена ошибка, сообщающая, что каталог не удаляется.

Создание и распаковка архивов в Linux

В случае с Linux VPS на базе OpenVZ и KVM для работы с архивами достаточно базовых компонентов системы, а именно Tar, Gzip и Bzip2, которые при создании сжатого архива работают как единое целое, т.к. сам по себе архиватор Tar не предусматривает возможность сжатия данных. Для этой цели как раз и используется Gzip или Bzip2. Архивы, созданные с применением Gzip, обычно имеют расширение .tar.gz, а при использовании Bzip2.tar.bz2.

Создание tar-архива без сжатия

Для создания такого архива используется команда:

tar -cf filename.tar file1 file2 fileN

Параметр —cf отвечает за создание архива filename.tar, в который войдут указанные файлы. Вместо файлов могут быть указаны и директории.

Создание архива с использованием сжатия

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

Пример сжатия Gzip:

tar -cvzf filename.tar.gz dir_name

В данном случае мы попытались запаковать папку dir_name в архив filename.tar.gz. Из указанных параметров -z указывает на использование метода Gzip, а -v выводит результаты процесса создания архива с указанием упакованных файлов или папок.

Пример сжатия Bzip2:

tar -cvjf filename.tar.bz2 dir_name

Данная команда аналогична предыдущей и имеет отличие в параметре –j, т.к. именно он отвечает за использование метода сжатия Bzip2.

Распаковка архива

Для того, чтобы распаковать архив, используется команда:

tar -xvf filename.tar.bz2

В данном случае архив filename.tar.bz2 будет распакован в ту папку, в которой вы находились в момент запуска команды. Для того, чтобы распаковать архив в какую-либо другую директорию, можно использовать команду:

tar -xvf filename.tar.bz2 -C /path/to/folder

В этом случае архив распакуется в указанной директории.

Просмотр содержимого архива без распаковки

Для этих целей используется следующая команда:

tar -tf filename.tar.gz

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

Просмотреть полный список возможностей архиватора tar можно при помощи команд:

tar --help      #вызов справки по командам и параметрам
man tar	        #вызов расширенной документации

Создание и распаковка ZIP-архивов

Создание zip-архива выполняется командой:

zip archive.zip filename

Вместо archive.zip указываем имя создаваемого архива. Вместо filename указываем имя файла, который нужно архивировать. Для архивации целой папки необходимо использовать параметр –r, который инициирует рекурсивное архивирование. Без этого параметра будет заархивирована только папка без вложенных в неё файлов. Пример команды:

zip –r archive.zip dirname

Распаковка архива производится командой unzip:

unzip archivename.zip

Если необходимо распаковать в конкретную папку, то для этого используется параметр –d. Например:

unzip –d dirname archivename.zip

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

Просмотреть полный список возможностей архиватора zip и unzip можно при помощи команд:

zip --help или unzip --help	#вызов справки по командам и параметрам
man zip или man unzip		#вызов расширенной документации

Распаковка RAR-архивов

Для извлечения содержимого архива используется команда unrar:

unrar filename.rar

Посмотреть список файлов в архиве без его распаковки можно командой:

unrar –t filename.rar

Примечание: Стоит отметить, что Unrar может отсутствовать по умолчанию в некоторых Linux-дистрибутивах. Установить данное ПО можно следующими командами:

CentOS/Fedora:

yum install unrar

Debian/Ubuntu:

apt-get install unrar-free

Просмотреть полный список возможностей архиватора unrar можно при помощи команд:

rar --help 	#вызов справки по командам и параметрам
man unrar	#вызов расширенной документации

Пример создания резервной копии данных на VPS

Допустим, на VPS необходимо сделать резервную копию файлов сайта, которые располагаются в директории /var/www/html/mysite. Чтобы создать сжатый архив данных, расположенных в указанной директории, необходимо выполнить следующую команду:

tar -cvzf mysite.tar.gz /var/www/html/mysite

В результате содержимое директории /var/www/html/mysite будет запаковано в архив mysite.tar.gz.