“Фантомные” файлы в ext4? (ktorrent выделенное дисковое пространство)

Я думал, что awk мог бы сделать это приятно, таким образом, я погуглил "awk чтение входа из двух файлов" и нашел, что статья о stackoverflow использовала в качестве начальной точки.

Сначала сжатая версия, затем полностью прокомментировал ниже этого. Это взяло больше, чем несколько минут для разработки. Я радовался бы некоторым улучшениям от более умных людей.

awk '{if(length($0)>max)max=length($0)}
FNR==NR{s1[FNR]=$0;next}{s2[FNR]=$0}
END { format = "%-" max "s\t%-" max "s\n";
  numlines=(NR-FNR)>FNR?NR-FNR:FNR;
  for (i=1; i<=numlines; i++) { printf format, s1[i]?s1[i]:"", s2[i]?s2[i]:"" }
}' file1 file2

И вот полностью зарегистрированная версия вышеупомянутого.

# 2013-11-05 mike@diehn.net
# Invoke thus:
#   awk -f this_file file1 file2
# The result is what you asked for and the columns will be
# determined by input file order.
#----------------------------------------------------------
# No matter which file we're reading,
# keep track of max line length for use
# in the printf format.
#
{ if ( length($0) > max ) max=length($0) }

# FNR is record number in current file
# NR is record number over all
# while they are equal, we're reading the first file
#   and we load the strings into array "s1"
#   and then go to the "next" line in the file we're reading.
FNR==NR { s1[FNR]=$0; next }

# and when they aren't, we're reading the
#   second file and we put the strings into
#   array s2
{s2[FNR]=$0}

# At the end, after all lines from both files have
# been read,
END {
  # use the max line length to create a printf format
  # the right widths
  format = "%-" max "s\t%-" max "s\n"
  # and figure the number of array elements we need
  # to cycle through in a for loop.
  numlines=(NR-FNR)>FNR?NR-FNR:FNR;
  for (i=1; i<=numlines; i++) {
     printf format, s1[i]?s1[i]:"", s2[i]?s2[i]:""
  }
}

3
09.02.2015, 18:20
1 ответ

Ktorrent Редкие файлы . В основном, редкий файл - это файл с «отверстиями»: фактическое дисковое пространство не используется для областей файла, которые «пустыми» (то есть содержит только нули).

Таким образом, ваш файл, кажется, имеет определенный размер (в вашем случае, размер вашего видео Star Trek), но на самом деле не использует дисковое пространство для этих областей, которые еще не «заполнены» (в вашем случае, Части того, что Ktorrent еще не загружается), тем самым избегая трата пробела до тех пор, пока он не будет необходимости.

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

Вы можете увидеть реальное использование диска такого файла с du или LS -S , и его очевидное использование диска с DU -B или LS -L .

DF и общий размер, представленный LS -L , показывают только реальное использование диска.

3
27.01.2020, 21:23

Теги

Похожие вопросы