Esta es una necesidad increíblemente común por una variedad de razones (Me gusta encontrar la copia de seguridad más reciente en un directorio ), y es una tarea sorprendentemente simple.
Voy a proporcionar una solución de Linux que utiliza las utilidades find, xargs, stat, tail, awk y sort.
La mayoría de las personas han proporcionado algunas respuestas únicas, pero prefiero la mía porque maneja correctamente los nombres de archivo, y el caso de uso se puede cambiar fácilmente (modificar estadísticas y ordenar argumentos)
También proporcionaré una solución de Python que debería permitirle usar esta funcionalidad incluso en Windows
find. -type f -print0 | xargs -0 -I{} stat -c '%s %n' {} | sort -n
# Each utility is split on a new line to help
# visualize the concept of transforming our data in a stream
find. -type f -print0 |
xargs -0 -I{} stat -c '%s %n' {} |
sort -n |
tail -n 1 |
awk '{print $2}'
# (Notice only the first argument of stat changed for new functionality!)
find. -type f -print0 | xargs -0 -I{} stat -c '%Y %n' {} |
sort -n | tail -n 1 | awk '{print $2}'
Explicación:
#!/usr/bin/env python
import os, sys
files = list()
for dirpath, dirname, filenames in os.walk(sys.argv[1]):
for filename in filenames:
realpath = os.path.join(dirpath, filename)
files.append(realpath)
files_sorted_by_size = sorted(files, key = lambda x: os.stat(x).st_size)
largest_file = files_sorted_by_size[-1]
print(largest_file)
Esta secuencia de comandos tarda un poco más en explicarse, pero esencialmente si la guarda como secuencia de comandos, buscará en el primer argumento proporcionado en la línea de comando y devolverá el archivo más grande en ese directorio. La secuencia de comandos no verifica errores, pero debería darle una idea de cómo abordar esto en Python, lo que le brinda una buena forma independiente de la plataforma para resolver este problema.
Дело не в том, что -вместо разделов можно настроить пользовательские петлевые устройства(losetup --offset --sizelimit
)или dmsetup
линейные сопоставления. Или вы можете сделать сумасшедшие вещи, например, добавить его к зеленому VG, создать зеленый -LV, чтобы использовать его в качестве PV для красного VG. Технически это сделало бы пространство пригодным для использования красным VG, но с зависимостью от зеленого VG.
Тем не менее, вы действительно не хотите делать это таким образом.
Просто настройте таблицу разделов. Даже если это означает добавление нового диска и перенос данных с помощью pvmove
или резервное копирование и копирование данных. Это правильный способ сделать это -каждый диск должен быть сначала разбит на разделы, а затем разделы должны использоваться для всего остального. Никогда не размещайте данные непосредственно на необработанном диске, иначе вы застрянете в ситуации, когда вы не сможете добавить разделы.
Если это не вариант, я бы предпочел vgmerge
зеленый и красный в один, и вы по-прежнему можете решать, что и где размещать на lvcreate
, чтобы все было эффективно сохранено одинаково.