Как изменить размер папки linux

Обновлено: 04.07.2024

1) Использовать пакет Quota. С помощью этого пакета можно задать квоту на дисковое пространство на разделе, для пользователя и для группы пользователей. Минус: задать отдельные квоты на дирректории, расположенные на одном разделе нельзя (или я пока незнаю как).

2) Создать файл необходимого размера, отформатировать его, и смонтировать в расшаренную папку. Тем самым получаем каталог ограниченного размера. Минус: если это каталог для нескольких пользователей пользователей, то один пользователь может занять все пространство, предназначенное для группы.

Избавиться от этих минусов можно комбинируя эти два способа. Алгоритм действий такой:

1) Создаем файлы для групп

2) Форматируем их

3) Монтируем файлы в соответствующие папки

4) Включаем квоты для пользователей на созданных файлах-разделах используя Quota

Тем самым на одном разделе можно создать несколько каталогов различного фиксированного объема и на каждый каталог задать различные квоты для пользователей.

Создадим два каталога, к примеру: для документов и "помойка" для остального хлама.

sudo mkdir /home/doc

sudo mkdir /home/other

Даем права на папки(например 770 - полный доступ владельцу и группе, остальным доступа нет):

sudo chmod 770 /home/doc

sudo chmod 770 /home/other

Создаем папку, где будут храниться "форматированные файлы-разделы" :

sudo mkdir /home/fs

В данном примере создаем файл, содержащий 10485760 блоков размером по 1024байт = 10ГБ для документов (при необходимости размер изменяем на нужный меняя count):

sudo dd if=/dev/zero of=/home/fs/doc.fs bs=1024 count=10485760

И для остального к примеру 20ГБ:

sudo dd if=/dev/zero of=/home/fs/other.fs bs=1024 count=20971520

Даем права на созданные файлы:

sudo chmod 770 /home/fs/doc.fs

sudo chmod 770 /home/fs/other.fs

Меняем группу, которой принадлежат файлы. Допустим что пользователи, которым нужен доступ в создаваемые дирректории, входят в группу "smbusers", тогда:

sudo chgrp smbusers /home/fs/doc.fs

sudo chgrp smbusers /home/fs/other.fs

Форматируем файлы в ext3:

sudo mkfs.ext3 /home/fs/doc.fs

sudo mkfs.ext3 /home/fs/other.fs

Монтируем в созданные нами папки:

sudo mount -t ext3 -o loop /home/fs/doc.fs /home/doc

sudo mount -t ext3 -o loop /home/fs/other.fs /home/other

для автоматического монтирования при загрузке в /etc/fstab добавляем:

/home/fs/doc.fs /home/doc auto auto,loop 0 0

/home/fs/other.fs /home/other auto auto,loop 0 0

Теперь нам надо установить квоты для юзверей на дисковое пространство. Ставим пакет quota:

sudo apt-get install quota

Редактируем файл /etc/fstab, добавляем "usrquota" в раздел, на который устанавливаем ограничение для пользователей:

sudo nano /etc/fstab

/home/fs/doc.fs /home/doc auto auto,loop,usrquota 0 0

/home/fs/other.fs /home/other auto auto,loop,usrquota 0 0

Этой командой создадим файлы:

quotacheck /home/doc

quotacheck /home/other

Если будет ругаться - пробуем запускать с ключем -m или -f .

sudo edquota -u petrov_ia

после этой команды откроется текстовый редактор, в которым указываем ограничения для пользователя petrov_ia и сохраняем. Вы можете ограничивать размещение ресурсов на основе объема дискового пространства (квотирование блоков), количества файлов (квотирование inode) или их комбинации. Каждое из этих ограничений, в свою очередь, делится на две категории: мягкие (soft) и жёсткие (hard) ограничения. Жёсткое ограничение не может быть превышено. мягкие ограничения могут быть превышены в течении некоторого периода времени. Если пользователь превышает своё мягкое ограничение в течение периода времени, превышающего отсрочку, то это мягкое ограничение становится жестким и последующее выделение ресурсов будет запрещено.

Например поставим ограничения: по объему – 1000 Мбайт, по количеству – 1000 файлов. Добавляя 10% запаса на жесткие пределы для раздела doc. И в 2 раза больше для other:

Disk quotas for user petrov_ia (uid 1005):

Filesystem blocks soft hard inodes soft hard

/dev/loop0 7 1024000 1126400 4 1000 1100

/dev/loop1 7 2048000 2252800 4 2000 2200

Размер указывается не в КБ, это число блоков. Но при создании файла с помощью команды dd мы указывали размер блока bs=1024, поэтому в данном случае размер 1 блока = 1 КБ.

Параметры blocks и inodes изменять бессмысленно, они ставятся автоматически.

Параметр "grace period" позволяет вам установить время, прежде чем значение soft limit будет приведено в жизнь на файловой системе с включенными квотами:

sudo edquota -t

Grace period before enforcing soft limits for users:

Time units may be: days, hours, minutes, or seconds

Filesystem Block grace period Inode grace period

/dev/loop0 7days 7days

Проверяем установленные квоты:

sudo repquota /home/doc

sudo repquota /home/other

Теперь размеры расшаренных дирректорий у нас жестко ограничены.

sudo touch quota.sh

sudo chmod +x quota.sh

Открываем для редактирования:

sudo nano quota.sh

echo "o_prodag: 2"

echo "o_buh: 3"

echo "o_logist: 4"

echo "o_administraciya: 5"

echo "share : 6"

echo -e "Введите № раздела: \c "

read fs

case $fs in

1) fs=o_it;;

2) fs=o_prodag;;

3) fs=o_buh;;

4) fs=o_logist;;

5) fs=o_administraciya;;

6) fs=share;;

esac

echo "Выполняется проверка раздела. "

tune2fs -l /home/fs/$fs.fs | grep "Block count"

tune2fs -l /home/fs/$fs.fs | grep "Block size"

tune2fs -l /home/fs/$fs.fs | grep "Free blocks"

bsize=`tune2fs -l /home/fs/$fs.fs | grep "Block size" | cut -d ':' -f2`

bcount=`tune2fs -l /home/fs/$fs.fs | grep "Block count" | cut -d ':' -f2`

fcount=`tune2fs -l /home/fs/$fs.fs | grep "Free blocks" | cut -d ':' -f2`

size=`expr $bcount \* $bsize`

x=$size

busy=`expr $fcount \* $bsize`

busy=`expr $size - $busy`

echo "Занято на диске:"

busy=`expr $busy / 1048576`

echo "$busy MB"

echo "Общий размер диска:"

size=`expr $size / 1048576`

echo "$size MB"

echo -e "Введите размер раздела(MB):\c "

read size

size=`expr $size \* 1048576`

sizefs=`expr $size / $bsize`

ddcount=`expr $size / 1024`

then

echo "Размонтируется раздел. "

umount /home/$fs

echo "Увеличение раздела. "

dd if=/dev/zero of=/home/fs/$fs.fs bs=1024 count=$ddcount conv=notrunc oflag=append

echo "Проверка раздела. "

e2fsck -f /home/fs/$fs.fs

echo "Изменение файловой системы под новый размер. "

resize2fs /home/fs/$fs.fs $sizefs

echo "Монтирование раздела. "

mount -t ext3 -o loop /home/fs/$fs.fs /home/$fs

echo "Размонтируется раздел. "

umount /home/$fs

echo "Проверка раздела. "

e2fsck -f /home/fs/$fs.fs

echo "Изменение файловой системы под новый размер. "

resize2fs /home/fs/$fs.fs $sizefs

echo "Уменьшение раздела. "

dd if=/dev/zero of=/home/fs/$fs.fs bs=1024 count=$ddcount conv=notrunc oflag=append

Прошу подсказать, есть ли способ в моем случае изменить размер /home напр. до 10ГБ, не прибегая к загрузке с Livecd, на живой системе без потери данных?

Filesystem Size Used Avail Use% Mounted on

devtmpfs 32G 0 32G 0% /dev

tmpfs 32G 0 32G 0% /dev/shm

tmpfs 32G 26M 32G 1% /run

tmpfs 32G 0 32G 0% /sys/fs/cgroup

/dev/sda2 30G 3.0G 27G 11% /

tmpfs 32G 90M 32G 1% /tmp

/dev/sda5 2.0G 1.2G 613M 67% /var

/dev/sda3 2.0G 508M 1.3G 28% /home

/dev/sda7 2.9G 105M 2.7G 4% /var/log

/dev/sda6 2.0G 6.1M 1.8G 1% /var/tmp

/dev/sda1 497M 173M 325M 35% /boot

/dev/sda8 988M 38M 884M 5% /var/log/audit

Может через последовательность команд для моих разделов это возможно?: umount resize2fs lvresize mount


Однако геморный это вариант, LiveCD будет даже быстрее, даже со скачиванием образа с сайта.

Korchevatel ★★★★★ ( 20.01.20 00:46:24 )
Последнее исправление: Korchevatel 20.01.20 00:47:42 (всего исправлений: 2)

После изменения ещё и UUID раздела поменяется и fstab отвалится. Но это не точно.

не прибегая к загрузке с Livecd, на живой системе без потери данных?

Логаут-то полюбасу делать.

есть ли способ в моем случае изменить размер /home напр. до 10ГБ

А есть место свободное где-то на диске? Или надо другой раздел уменьшить предварительно?

А у вас там LVM разве?

Самый простой вариант - подмонтировать куда-то в /home другой раздел, например у вас в /home/foobar валится весь тот хлам, что должен взлезть в 10Gb - берете новый кусок диска и в этот каталог и монтируете. Если нужно вот прям сам /home увеличить - лучше таки запланируйте даунтайм.


Недостаточно данных. Нет информации о схеме разметки на диске непосредственно.

В инструкции рассмотрены сценарии расширения дискового пространства разделов в Linux без потери информации.

Принцип увеличения диска:

  1. Расширение раздела.
  2. Изменение размера файловой системы.

В зависимости от типа раздела и файловой системы, действия различаются.

Любая работа с диском несет риск потери информации. Перед началом работ убедитесь в наличие резервных копий ценных данных.

Шаг 1. Расширение раздела

Обычные тома

Допустим, есть диск /dev/sdb и раздел /dev/sdb2, который нужно увеличить.

Сначала необходимо отмонтировать раздел:

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

Подключаемся утилитой fdisk к /dev/sdb:

Если мы работаем с разделом более чем 2Тб, используем утилиту parted.

Смотрим номера разделов:

Удаляем раздел (не переживайте — все данные сохраняются):

* в моем примере, раздел для удаления на второй позиции.

Создаем новый раздел:

Номер раздела — 2:

На запрос начального и конечного секторов просто нажимаем Enter.

Если раздел был загрузочный, добавляем соответствующий флаг:

Еще раз проверяем, что получилось:

LVM-тома расширяются на лету, даже для корневых разделов. В данном примере, работаем с /dev/sda.

Открываем диск утилитой fdisk:

* напомню, что при работе с диском 2Тб и более, следует использовать утилиту parted.

Создаем еще один раздел:

Номер раздела оставляем тот, который предлагает система (просто нажимаем Enter).

Первый и последний сектора также оставляем по умолчанию для использования всего дискового пространства (еще два раза Enter).

Задаем тип раздела:

Выбираем номер раздела (в моем примере создавался раздел 3):

Командой L можно посмотреть список всех типов, но нас интересует конкретный — LVM (8e):

Проинформируем систему, что в таблице разделов произошли изменения:

Создаем физический том из нового раздела:

Смотрим наши Volume Group и для нужного добавляем созданный том:

vgextend vg_centos /dev/sda3

* в моем примере группа томов LVM называется vg_centos

Смотрим LVM-разделы и расширяем пространства для нужного:

lvextend -l +100%FREE /dev/vg_centos/lv_root

* данная команда расширяем LVM-раздел /dev/vg_centos/lv_root, используя все свободное пространство (100%FREE).

Шаг 2. Изменение размера для файловой системы

Посмотреть файловую систему:

ext2/ext3/ext4:

XFS:

Reiserfs:

* обратите внимание, что в данных примерах используются различные устройства.

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

mount /dev/sda2 /mnt

Проверяем, что настройки применились:

Увеличение разделов с Gparted

Если работы выполняются на системе с графическим интерфейсом или есть возможность перезагрузить сервер и загрузиться с LiveCD, можно воспользоваться простым средством — утилитой Gparted, которая позволяем менять размер разделов мышкой.

Запускаем утилиту - выбираем диск, с которым будем работать - кликаем правой кнопкой по разделу, который хотим увеличить и выбираем Resize/Move:

Изменение раздела в GParted

В открывшемся окне с помощью мышки или форм меняем размер раздела:

Уменьшение или увеличение пространства в GParted

Нажимаем кнопку Resize/Move.

Проверяем изменения в окне программы и сохраняем настройки кнопкой «Apply All Operations»:

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

В этой статье мы рассмотрим самые часто используемые команды Linux для работы с файлами и каталогами, после их освоения терминал больше не будет казаться таким непонятным и объемлемым. Вот какие команды будут нас сегодня интересовать:

  • ls - список файлов в директории;
  • cd - переход между директориями;
  • rm - удалить файл;
  • rmdir - удалить папку;
  • mv - переместить файл;
  • cp - скопировать файл;
  • mkdir - создать папку;
  • ln - создать ссылку;
  • chmod - изменить права файла;
  • touch - создать пустой файл.

А теперь перейдем к подробному рассмотрению всех этих команд.

1. ls - просмотр содержимого папки

Команда ls позволяет вывести список файлов заданной папки, по умолчанию, будет выведен список файлов текущей папки:


Вы можете вывести список файлов из всех подкаталогов рекурсивно, для этого используйте опцию -R:

Чтобы вывести список файлов нужной папки, вы можете передать ее адрес утилите, например, /home:


Чтобы получить больше информации и вывести все имена файлов в виде списка используйте опцию -l:


2. cd - изменить папку

Команда cd позволяет изменить текущую папку на другую. По умолчанию, текущей считается домашняя папка, например, cd Desktop меняет папку на рабочий стол, если вы выполните ее из домашнего каталога:


Вы также можете указать полный путь к папке:


Команда cd .. переходит в папку, которая находится выше на одну в файловой системе:


Вы также можете вернуться в предыдущую рабочую папку:

3. rm - удалить файлы

Команда rm позволяет удалить файл. Будьте очень осторожны с ней, она не будет спрашивать подтверждения:


Например, rm file удалит файл с именем file, который находится в текущей папке. Как и в предыдущих вариантах, вы можете указать полный путь к файлу linux. Например:

Если вы хотите удалить папку, то нужно использовать опцию -r. Она включает рекурсивное удаление всех файлов и папок на всех уровнях вложенности:

rm -r /home/user/photo/

Будьте осторожны, потому что эта команда удаляет файлы безвозвратно.

4. rmdir - удалить папку

Команда rmdir позволяет удалить пустую папку. Например, команда rmdir directory удалит папку directory, которая находится в текущей папке:


Если вам нужно удалить папку с файлами, то нужно использовать утилиту rm вместе с опцией -r.

5. mv - перемещение файлов

Команда mv перемещает файл в новое место. Она также может использоваться для переименования файлов. Например, mv file newfile переименует файл file в newfile:

mv file newfile


Чтобы переместить файл в другую папку нужно указать путь к ней, например, переместим файл file в папку /home/user/tmp/

mv file /home/user/tmp/

6. cp - копирование файлов

Эта cp и mv - это похожие команды linux для работы с файлами. Они работают аналогичным образом, только исходный файл остается на своем месте.

cp file newfile


Вы также можете рекурсивно скопировать всю папку с помощью команды cp -r. Эта команда скопирует всю папку вместе со всеми файлами и вложенными папками в новое место. Например, скопируем папку /etc/:

cp -r /etc /etc_back

7. mkdir - создать папку

Команда mkdir позволяет создать новую папку mkdir test создаст папку в текущем каталоге:


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

8. ln - создание ссылок

Утилита ln позволяет создавать жесткие и символические ссылки на файлы или папки. Для создания символической ссылки используется опция -s. Например, вы создадим ссылку на папку с загрузками:

ln -s /home/user/Downloads/ /home/user/test/


Для создания жесткой ссылки никаких опций задавать не нужно:

ln /home/user/Downloads/ /home/user/test/

9. chmod - изменить права

chmod позволяет изменить права доступа к файлам. Например, chmod +x script.sh добавляет флаг исполняемости к файлу script.sh:

chmod +x script.sh


Чтобы убрать флаг исполняемый используйте опцию -x:

chmod -x script.sh


Подробнее о том, как работают разрешения для файлов смотрите в статье права доступа к файлам в Linux.

10. touch - создать файл

Команда touch создает пустой файл. Например, touch file создаст пустой файл в текущей папке с именем file:


Для создания файлов через терминал существует еще несколько команд, они рассмотрены в статье как создать файл в linux.

11. mc

Работа с файлами Linux через терминал может выполняться не только с помощью обычных консольных команд, каждая из которых выполняет только определенное действие. Вы можете использовать полнофункциональный файловый менеджер с псевдографическим интерфейсом на основе ncurses. Midnight Commander - это файловый менеджер, который можно использовать прямо в терминале. Для установки mc в Ubuntu выполните:

sudo apt install mc

После завершения установки достаточно выполнить команду mc:


Используйте клавиши со стрелками для перемещения по файлах, Tab для перехода на другую панель, Alt+1 для просмотра справки и Alt+2 для вывода меню:


Если терминальное окружение поддерживает мышь, то вы можете ее использовать в Midnight Commander.

Выводы

В этой статье мы рассмотрели как выполняется работа с файлами и каталогами в linux, с помощью терминала. Когда вы освоите все эти команды, вы сможете сделать большинство основных действий в терминале. А как часто вы пользуетесь терминалом? Используете его для работы с файлами? Напишите в комментариях!

Читайте также: