Как изменить размер папки 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. Расширение раздела
Обычные тома
Допустим, есть диск /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:
В открывшемся окне с помощью мышки или форм меняем размер раздела:
Нажимаем кнопку 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, с помощью терминала. Когда вы освоите все эти команды, вы сможете сделать большинство основных действий в терминале. А как часто вы пользуетесь терминалом? Используете его для работы с файлами? Напишите в комментариях!
Читайте также: