Ваш физический том LVM составляет 50 ГБ, но раздел, в котором он находится, имеет размер 100 ГБ. Чтобы использовать большую часть емкости логического тома www
, вам необходимо выполнить три шага:
pvresize /dev/xvdj1
www
логический том:lvextend -l 100%FREE /dev/data/www
Примечание. :Вы можете использовать параметр -r
с lvextend
для изменения размера логического тома и файловой системы с помощью одной команды.
Ваша переменная SNAPSHOTS
содержит пробелы. Чтобы перенаправить на его значение, заключите его в двойные кавычки:
echo > "$SNAPSHOTS"/test
Это, скорее всего, не будет делать то, что вы хотите, поскольку вы, кажется, хотите сохранить несколько путей в SNAPSHOTS
. Вы не можете хранить несколько отдельных строк в одной строке и думать, что сможете правильно извлечь их из этой единственной строки. Это действительно должен быть массив, а здесь вообще не нужно ls
:
shopt -s nullglob
SNAPSHOTS=(root*/)
for snap in "${SNAPSHOTS[@]}"; do
echo >"$snap"/test
done
или просто
shopt -s nullglob
for snap in root*/; do
echo >"$snap"/test
done
Установка параметра оболочки nullglob
гарантирует полное удаление шаблона, если он ничему не соответствует. Без nullglob
шаблон сохраняется как есть, если он ничему не соответствует.
Если вы хотите поместить пустую строку не во многие тысячи файлов, вы также можете
shopt -s nullglob
SNAPSHOTS=(root*/)
echo | tee "${SNAPSHOTS[@]/%//test}" >/dev/null
Если вы действительно хотите просто создать файлы (не записывать в них пустую строку ), тогда используйтеtouch
:
shopt -s nullglob
SNAPSHOTS=(root*/)
touch "${SNAPSHOTS[@]/%//test}" 2>/dev/null
Вы, ребята, все знаете и объясняете ответ, чтобы мы могли понять, этот веб-сайт представляет собой невероятную базу данных.
В конце концов я пошел с
for i in root*/
do
if [ "$i" != 'root*/' ]
then
sudo touch "$i"/test
fi
done
Здесь используется sudo, потому что эти папки со снимками принадлежат пользователю root.
Итак, теперь я понимаю свой первый шаг, который заключается в создании, переименовании, удалении, изменении разрешений и т. д. для файла в списке папок, возвращаемом внутри переменной.
Теперь я сделал еще один шаг, а именно отредактировал файл в каждой из папок, возвращаемых переменной, и заменил фиксированное значение на переменное, равное значению, возвращаемому переменной в начале.
Я не понимаю, как интегрировать переменную в значение, которое я хочу заменить.
Я изменил структуру своих снимков, чтобы упростить для себя (сценарий ). Итак, теперь переменная со списком всех папок в папке возвращает следующее:
echo $SNAPSHOTS
2020-12-22_19H05/
2020-12-23_19H05/
2020-12-24_19H05/
2020-12-25_19H05/
2020-12-26_19H05/
2020-12-27_19H05/
2020-12-28_19H05/
В каждой из этих папок, для которых имена каталогов меняются каждый день (самый старый день удаляется, а сегодняшний день добавляется ), есть файл, расположенный в /etc/fstab, поэтому 2020-12-22_19H05/etc/fstab
в качестве примера.
Мне нужно отредактировать этот файл, найти фиксированное значение «@home» и заменить его на переменную часть строки фиксированного префикса, например:
@snapshots/daily/home/$VARIABLE
$VARIABLE = имена каталогов, возвращаемые первой переменной, перечисленной выше.
Таким образом, в папке 2020-12-22_19H05/
файл /etc/fstab
будет отредактирован, чтобы заменить @home
на @snapshots/daily/home/2020-12-22_19H05
без /
в конце, его необходимо опустить/урезать. И так для всех папок, найденных по первой переменной.
Я ожидаю, что будут использоваться sed и, возможно, %, но я действительно понятия не имею, что искать в Интернете, чтобы 1 -получить ответ, но в основном 2 -понять ответ.
Спасибо!