Перенести папку на другой диск centos 7
Перемещение файлов и каталогов — одна из самых основных задач, которые вам часто приходится выполнять в системе Linux.
В этом руководстве мы объясним, как использовать команду mv для перемещения файлов и каталогов.
Как использовать команду mv
Команда mv (сокращение от move) используется для переименования и перемещения файлов и каталогов из одного места в другое. Синтаксис команды mv следующий:
SOURCE может быть одним или несколькими файлами или каталогами, а DESTINATION может быть одним файлом или каталогом.
- Когда в качестве SOURCE задано несколько файлов или каталогов, DESTINATION должен быть каталогом. В этом случае файлы SOURCE перемещаются в целевой каталог.
- Если вы укажете один файл как SOURCE , а целью DESTINATION является существующий каталог, то файл будет перемещен в указанный каталог.
- Если вы укажете один файл в качестве SOURCE и один файл в качестве цели DESTINATION вы переименуете файл .
- Если SOURCE является каталогом, а DESTINATION не существует, SOURCE будет переименован в DESTINATION . В противном случае, если DESTINATION существует, он будет перемещен в каталог DESTINATION .
Например, чтобы переместить файл file1 из текущего рабочего каталога в каталог /tmp вы должны запустить:
Чтобы переименовать файл, вам необходимо указать имя файла назначения:
Синтаксис перемещения каталогов такой же, как и при перемещении файлов. В следующем примере, если каталог dir2 существует, команда переместит dir1 внутрь dir2 . Если dir2 не существует, dir1 будет переименован в dir2 :
Подробный вывод
Другой вариант, который может быть полезен, — это -v . Когда используется эта опция, команда печатает имя каждого перемещенного файла:
Не перезаписывать существующие файлы
Параметр -n указывает mv никогда не перезаписывать существующие файлы:
Если существует file1 приведенная выше команда ничего не сделает. В противном случае он переместит файл в каталог /tmp .
Принудительная перезапись
Если вы попытаетесь перезаписать файл, доступный только для чтения, команда mv спросит вас, хотите ли вы перезаписать файл:
Чтобы не получать подсказки, используйте параметры -f :
Эта опция особенно полезна, когда вам нужно перезаписать несколько файлов, доступных только для чтения.
Запрашивать перед перезаписью
По умолчанию, если целевой файл существует, он будет перезаписан. Чтобы запросить подтверждение, используйте параметр -i :
Чтобы перезаписать файл типа y или Y
Параметры команды mv
Команда mv принимает несколько параметров, которые влияют на поведение команды по умолчанию.
В некоторых дистрибутивах Linux mv может быть псевдонимом команды mv с настраиваемым набором параметров. Например, в CentOS mv — это псевдоним mv -i . Вы можете узнать, является ли mv псевдонимом, используя команду type :
Если mv является псевдонимом, вывод будет выглядеть примерно так:
Если указаны конфликтующие варианты, последний имеет приоритет.
Перемещение нескольких файлов и каталогов
Чтобы переместить несколько файлов и каталогов, укажите файлы, которые вы хотите переместить, в качестве источника. Например, чтобы переместить файлы file1 и file2 в каталог dir1 , введите:
Команда mv также позволяет использовать сопоставление с образцом. Например, чтобы переместить все файлы pdf из текущего каталога в каталог ~/Documents , вы должны использовать:
Выводы
Команда mv используется для перемещения и переименования файлов и каталогов.
Для получения дополнительных сведений о команде mv страницу руководства или введите в терминале man mv .
Новые пользователи Linux, которых пугает командная строка, могут использовать файловый менеджер с графическим интерфейсом для перемещения своих файлов.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Есть 2 диска sda и sdb.
Всё лежит на sda.
Каталог /var/lib/pgsql/10/data я хочу оставить как есть. Каталог /var/lib/pgsql/10/backups я хочу перенести на диск sdb.
Создаете на /dev/sdb раздел, файловую систему вот это все.
после монтируете временyо скажем в /mnt/transfer , переносите туда свои бэкапы (содержимое /var/lib/pgsql/10/backups). После переноса исходную папку очищаете.
Отмонтируете /mnt/transfer и монтируете к /var/lib/pgsql/10/backups. Прописываете эту точку монтирования в /etc/fstsb , проверяете права доступа, должны соответствовать тому что было.
Дмитрий,
Мне не понятно почему у меня каталог /var/lib/pgsql/10/backups лезет в /home и обратно.
То есть я сделал mount:
sudo mount /dev/sdb1 /var/lib/pgsql/10/backup
Далее blkid для добавления в /etc/fstab:
далее cat /etc/fstab:
Затем в конце nano добавил в /etc/fstab:
Поменял права с root на postgres:
Далее делаю бэкап:
pg_dump -U postgres -F c -f test.backup testbase
Результат почему-то нахожу в каталоге /home/user, test.backup создается в этом каталоге.
Пробую тогда:
Да теперь результат в /var/lib/pgsql/10/backups
Далее смотрю каталог backups:
sudo ls -la /var/lib/pgsql/10/backups
Результат у меня почему-то кроме бэкапа есть каталоги из /home, вывод:
Работаю я из под user.
То есть у меня два момента проблемных:
- Почему у меня test.backup ложится в нужный каталог /var/lib/pgsql/10/backups только если указать полный путь, иначе ложится в /home/user из под которого проверяю?
- Почему у меня данные из /home и из /var/lib/pgsql/10/backups дублируются или они вложены как-то друг в друга? Тут у меня возможно сломанное мышление, так как виндовый админ. Я предпологаю что /dev/sdb1 это аналогичный D:\ на винде, а /home и /var/lib/pgsql/10/backups каталоги на нем.
Почему у вас /home и /dev/sdb1 имеют одинаковый id ?
Получается что вас уже home расположен на этом устройстве? верно?
В первоначальном сценарии про это не было ни слова.
Тогда проблему надо решать иначе.
Например в /home сделать каталог backup и тогда самый простой способ сделать симлинк с
/var/lib/pgsql/10/backups в /home/backups , либо , красивее -
Не понял?
UUID это же к устройству sdb1 относится? То есть насколько я понял в /etc/fstab запись говорит что /home лежит на диске /dev/sdb1 правильно? По аналогии сделал для /var/lib/pgsql/10/backups, то есть на раздел диска с UUID от /dev/sdb1 указал положить /var/lib/pgsql/10/backups. Или я не допонимаю чего-то?
Получается что вас уже home расположен на этом устройстве? верно?
В первоначальном сценарии про это не было ни слова.
Например в /home сделать каталог backup и тогда самый простой способ сделать симлинк с
/var/lib/pgsql/10/backups в /home/backups , либо , красивее -
mount --bind /home/backup /var/lib/pgsql/10/backups
Дмитрий,
А как сделать тогда отдельный раздел? sdb1 у меня занимает весь объем на sdb, я хочу тогда отщипнуть от него 500GB и ложить бэкапы на него. Проблема в том что на sdb1 уже /home и при попытке umount /home: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
через lsof /dev/sdb1 вижу много чего занятого:
Службу 1c я то могу выключить, но себя /home/user я не смогу потушить я на удаленном сервере выполняю всё это.
присоединяюсь к ответу Дмитрия, с уточнением по поводу SELinux, ибо если он включен, то выставите правильные права, иначе пользователь postgres не сможет записать в указанный каталог данные.
Имеется SSD диск 128 гб - на нем запущен CENTOS и веб версер.
Папки /home стало мало под сайты.
Вставил диск 1ТБ - могу ли увеличить раздел home за счет нового диска? если да, то как? подскажите пожалуйста.
Вывод команды fdisk -l
- Вопрос задан более трёх лет назад
- 4782 просмотра
Но смысл SSD тогда загадочен становится, в этом согласен с Denis Verbin
Есть два сервера и на обоих такая проблема.
В тестовый(для разработки) добавили 1ТБ. В боевой 256 ссд.
Пока сделал только на тестовом по пути gim0
На боевом буду разбираться с LVM. Спасибо за наводку!
Что-то сильно дофига выделено под корень /
10-15GB обычно с головой хватает.
Можно примонтировать его вместо /home и перенести туда все сайты, но в таком случае весь смысл ssd теряется.
Я бы вынес на HDD симлинками только "толстые" папки сайтов, например с аплоадами.
Смонтировать можно что угодно куда угодно. Создаёте каталог, и туда mount нового диска.
Допустим если у вас /dev/sdX1 примонтирован к /home, можно создать в /home любой каталог:
mkdir /home/something
И затем примонтировать /dev/sdY1 туда:
mount /dev/sdY1 /home/something
Теперь содержимое каталога /home/something будет отражать содержимое раздела /dev/sdY1
Полагаю, смонтировать новый диск туда, где сайты, и перенести данные на него.
Вставил диск 1ТБ - могу ли увеличить раздел home за счет нового диска? если да, то как? подскажите пожалуйста.
Вот прямо вот так нельзя, если только вы не используете BTRFS, там можно конвертнуть в RAID, и на лету прицепить ещё один диск. А так вам нужно программный RAID настроить между двумя разделами, если не хотите связываться с BTRFS (хотя с ним всё вообще тривиально решается) - попробуйте mdadm, правда не знаю как последний отреагирует на разные размеры.
В целом судя по всему у вас основной диск маленький, просто смонтируйте новый в /home да и всё. Это:
0) остановить веб-сервер или что там у вас использует /home
1) отформатировать новый диск
2) смонтировать новый диск куда-то
3) перенести на новый диск данные /home
4) переименовать /home во что-то, создать пустую /home
5) размонтировать новый диск
6) прописать в /etc/fstab монтирование нового диска в /home
7) mount -a
8) всё, можно запускать обратно
НО при подключении к базе ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Вопрос что делаю не так п.с если указать путь к сокету то заходит mysql -u root -pMyPassword --socket=/новый путь/mysql/mysql.sock
Вопрос что делаю не так п.с если указать путь к сокету то заходит mysql -u root -pMyPassword --socket=/новый путь/mysql/mysql.sock
Что значит «/новый путь/mysql/mysql.sock»? Все утилиты настроены на то, что файл сокета находится по пути '/var/lib/mysql/mysql.sock'. Если ты хочешь перенести фалы mysql на отдельный диск, то файловая система этого диска должна быть смонтирована в /var/lib/mysql и соответственно файл сокета будет находиться по старому пути, т.е. в '/var/lib/mysql/mysql.sock'.
В инструкции собственно это и написано.
kostik87 ★★★★★ ( 24.06.18 12:35:55 )
Последнее исправление: kostik87 24.06.18 12:36:12 (всего исправлений: 1)
решил это так Просто отредактируйте /etc/my.cnf Добавить следующие строки в my.cnf добавляю [client]
НО все равно я так и попробую база на новом месте а сокет на старом
Что значит новое место и старое? Место должно быть одно.
Т.е. изначально у тебя была одна файловая система, один раздел, на котором были системные файлы Linux и файлы базы mysql, в том числе и сокет, допустим это /dev/sda3.
Затем ты подключил диск, допустим /dev/sdb и на нём создал раздел, допустим /dev/sdb1 и на нём файловую систему.
Остановил сервис mysql.
Далее ты смонтировал /dev/sdb1, допустим в /tmp/sdb1, далее скопировал все файлы из /var/lib/mysql в /tmp/sdb1:
Теперь просто отмонируешь файловую систему из /tmp/sdb1 и монтируешь в /var/lib/mysql.
Всё, файлы базы находятся на другом диске, другой файловой системе, но логически эта файловая система смонтирована в /var/lib/mysql и файлы доступны по прежнему пути, файлы сокекта, даже если они лежат в /var/lib/mysql, а не в /var/run/mysql так же доступны по старому пути, никаких дополнительных настроек делат не нужно!
Теперь просто нужно добавить в /etc/fstab строку с параметрами монтирования /dev/sdb1 в /var/lib/mysql.
Раздел /dev/sdb1 указан в примере, у тебя может быть другой.
Что ты сделал я не знаю. Но перенос части файловой системы linux на отдельный раздел (файловую систему) не должен вызывать проблем, если новая файловая система смонтирована в то место, где находились перемещённые файлы.
Теперь рассказывай что делал ты.
Ну либо переделай как описал я. Ествественно не удаляй базу, оставь копию.
я не рассказываю и не спрашиваю как смонтировать раздел к примеру база лежала /var/lib/mysql/* стала лежать в /другая папка/mysql/* НО старый путь я убил (вот была ошибка) в my.cnf меняем путь к базе а сокет оставляем на старом месте и все
НО старый путь я убил (вот была ошибка) в my.cnf меняем путь к базе а сокет оставляем на старом месте и все
Не только в этом ошибка. Ошибка в том, что написал, что делал вот по такой-то инструкции, а по факту, ты сделал совсем не по инструкции, а так, как захотелось твоей левой пятке, пути другие, удалил пути, а потом пришёл на форум и говоришь, что делал по инструкции, в которой всё собственно всё правильно, а у тебя ничего не работает.
Так что либо в следующий раз пиши как ты и что делаешь, а не говори что делал так, а на самом деле нет.
А лучше переделай всё на стандартный путь /var/lib/mysql, тебе нужно лишь смонтировать файловую новую систему в /var/lib/mysql и вернуть прежние настройки.
Просто суть в том, что если ты будешь обновлять систему, ставить обновления пакета mysql или mariadb, то при установке обновления твои изменённые настройки сбросятся на те, что указаны в пакете, т.е. /var/lib/mysql, да и другие пакеты, которые будут работать в связке с mysql тоже будут искать /var/lib/mysql и соответственно файл сокета по стандартному пути.
Так что ещё раз советую переделай всё обратно на /var/lib/mysql.
Ну и когда будешь создавать вопрос на форуме описывай что и как ты делал.
Ну вообще-то достаточно симлинка. Перенесли в другую директорию и сделали симлинк на нее. Очень простая процедура.
Только осторожно, эту ручку по-дефолту отключили
Ну и в более старых версиях любят выключать.
Лениво искать, интересно в машке также?
Проверил на тестовой машке на копейке7, все с полными обновлениями, пока работает.
В этой заметке я расскажу, как переместить системные папки Linux, такие как var и opt, а так же swap на отдельные диски. Такой подход к организации дискового пространства сервера поможет в будущем избежать проблем при росте проекта и выделении дополнительного пространства под разные ресурсы.
Внимание! Если сервер уже используется в работе, то перенос папок во время работы приложений может вызвать сбой в работе сервера. То есть перед процедурой переноса папок нужно остановить все приложения, использующие в эти служебные папки. Перенос папок в только что установленном сервере проблем не вызывает.
Ниже на картинке в качестве примера показан сервер и его диски, на эти диски разнесены служебные папки.
Файл подкачки (swap) является средством виртуализации памяти, позволяя использовать больше оперативной памяти, чем есть на сервере. Использование swap-файла позволяет предотвратить замедление или даже остановку работы сервера при исчерпании физической оперативной памяти. Когда оперативная память заканчивается, операционная система "сбрасывает" неиспользуемую в данный момент информацию в файл-подкачки на жестком диске, очищая физическую память для текущих процессов. Рекомендуемые размеры файла подкачки в зависимости от физической памяти показаны в таблице ниже:
Объем оперативной памяти сервера, ГБ | 1 | 2 | 4 | 8 | 16 | 32 | 64 |
Размер файла подкачки, ГБ | 1 | 1 | 2 | 3 | 4 | 6 | 8 |
Примечание. Полную таблицу с рекомендациями можно найти на странице Ubuntu Swap FAQ.
Если такой файл подкачки разместить на SSD диске, то можно получить расширение оперативной памяти сервера без значительного понижения быстродействия системы.
Ниже показан порядок команд, которые надо выполнить, чтобы создать swap-файл на отдельном диске.
Перемещение папки /var
Папка /var используется для хранения изменяемых данных приложений, таких как кэш, базы данных, страницы веб-сервера, метаданные, журналы (логи), почтовые ящики, очереди (печати, почты и т.д.), временные файлы и прочие. Ожидается, что в процессе работы сервера размер этой папки будет расти.
Список команд, которые надо выполнить, чтобы корректно перенести папку:
Перемещение папки /opt
Папка /opt хранит в себе пакеты установленных драйверов, программ и игр. Эта папка по своему назначению очень похожа на папку Program Files в операционной системе Windows - в нее по умолчанию ставятся все программы, а каждая программа имеет свой каталог. В процессе работы сервера эта папка растет не сильно, но если компьютер используется как рабочая станция, то лучше вынести папку на отдельный диск.
Резервное копирование файлов
Если целевой файл существует, вы можете создать его резервную копию, используя параметр -b :
Файл резервной копии будет иметь то же имя, что и исходный файл, с добавленной к нему тильдой ( ~ ).
Используйте команду ls, чтобы убедиться, что резервная копия была создана:
Читайте также: