Этот код perl
даст вам подсчитанный хвост
#!/usr/bin/perl
#
# Usage tailmax.pl <filename> [<num_lines>]
#
use strict;
use warnings;
use File::Tail;
my $logfile = shift @ARGV;
my $pattern = shift @ARGV || '';
my $count = shift @ARGV || -1;
my $fh = File::Tail->new(name => $logfile, tail => 0, interval => 0, maxinterval => 2) or
die "Cannot open $logfile: $!\n";
while ($count != 0 and defined (my $line = $fh->read)) {
if ($pattern eq '' or $line =~ /$pattern/) {
print "$line";
$count-- if $count > 0;
}
}
, если вы сохраните его в файл, например / usr / local / bin / tailmax
и сделать его исполняемым, вы можете вызвать его так, что даст вам следующие 100 сообщений из файла журнала / var / log / messages
, которые содержат RE somepattern
. (Для чтения этого файла может потребоваться root
.)
tailmax /var/log/messages 'somepattern' 100
Вы можете попробовать использовать встроенные инструменты резервного копирования Windows, чтобы создать системный образ вашей ОС Windows. Вот учебник по Windows Central.
Вы также можете сжать раздел и создать новый, на котором вы можете установить Linux и двойную загрузку, но для начинающих пользователей это может быть рискованно и может привести к полной потере данных, если вы разбили неправильно.
Вы можете создать сжатый образ:
gzip < /dev/hdd > hdd.img.gz
Чтобы восстановить:
gunzip < hdd.img.gz > /dev/hdd
Если он никогда не использовался, только что с завода, свободного места не должно быть ' t быть рандомизированным, и результирующее сжатое изображение должно быть довольно маленьким.
Если свободное пространство равно нулю, вы также можете создать разреженный образ (в файловой системе, поддерживающей разреженные файлы):
dd bs=4K conv=sparse if=/dev/hdd of=hdd.sparse.img
Чтобы восстановить: (не следует использовать разреженное при восстановлении)
dd bs=1M if=hdd.sparse.img of=/dev/hdd
Чтобы проверить, сколько места на диске это файл на самом деле использует:
du -h hdd.sparse.img
Преимущество разреженного образа в том, что он несжатый и отображается с исходным размером (при этом на самом деле не используется пространство для нулей), поэтому вы можете смонтировать его только для чтения или попытаться загрузить его на виртуальной машине . Если ваша цель - виртуальная машина, вас также может заинтересовать qemu-img
.
Было бы интересно сделать это на месте. Это включало бы кеширование как можно большего количества данных в ОЗУ, затем создание файловой системы (со смещением 1 МБ) размером не больше, чем уже было кэшировано, затем заполните ее указанным выше и увеличьте файловую систему вместе с ней. После этого вы можете создать раздел, размер которого начинается с 1 МБ и независимо от размера, который он будет использовать в качестве раздела восстановления. Это сложное решение, и оно опасно, если процесс будет прерван.
Вы можете сделать это вслепую, например так:
gzip --verbose < /dev/hdd > /dev/hdd
но это предполагает, что сжатие всегда меньше, чем несжатые данные, и не будет писать заголовок gzip перед чтением данных и тому подобное. Это может сработать (пример ниже), но нет никаких гарантий.
# md5sum /dev/loop0
dd409e37f092ce049c396b99b32366fb /dev/loop0
# xz --verbose < /dev/loop0 > /dev/loop0
100 % 1,027.4 KiB / 8,192.0 KiB = 0.125
# unxz --verbose < /dev/loop0 | md5sum
--- % 1,027.4 KiB / 8,192.0 KiB = 0.125
unxz: (stdin): Compressed data is corrupt
--- % 1,027.4 KiB / 8,192.0 KiB = 0.125
dd409e37f092ce049c396b99b32366fb -
А потом вам еще предстоит решить, что с этим делать. В этом примере вам нужно будет переместить 1028 КБ в другое место (сдвинуть на 1 МБ, создать раздел такого размера, тогда у вас будет раздел восстановления).
Можно также подумать о том, чтобы сделать это задом наперед (чтобы изображение попало в конец диска).
Большинство компьютеров с предустановленной Windows OEM поставляются с инструментом для создания «дисков восстановления», USB или CD / DVD. Если ваш, это лучший вариант. Затем вы можете при желании сделать копию этого носителя для восстановления в файл на диске или сделать резервную копию любым другим обычным способом.
Если у вас нет, тогда вам придется прибегнуть к грубой силе. Поскольку у вас достаточно места на диске, чтобы сделать полную копию жесткого диска, это, вероятно, лучший вариант. Для этого вы должны:
/ mnt
. ddrescue
, чтобы скопировать внутренний жесткий диск, включая таблицы разделов и т. Д., В файл на целевом носителе. ddrescue
предпочтительнее, чем dd
, потому что он намного лучше справляется с любыми проблемами чтения, с которыми он может столкнуться.(Это в основном проблема с маргинальными носителями, но когда планируется создать образ, который будет использоваться намного позже для восстановления компьютера до заводского состояния, осторожность не повредит.) Хороший запуск может быть запущен sudo ddrescue -b 4096 -c 1024 -p / dev / sda /mnt/laptop-copy.sda
в терминале. (Значения для -b
и -c
не критичны, но могут использоваться для повышения производительности.) См. man 1 ddrescue
для их описания. параметры. split
. Например, вы можете использовать что-то вроде split -a 2 -d -n 100 /mnt/laptop-copy.sda
, чтобы разделить изображение на 100 частей одинакового размера. Позже они могут быть рекомбинированы с помощью cat
. gzip -1 /mnt/laptop-copy.sda*
должно быть достаточно; данные будут либо тривиально сжимаемыми, либо практически не сжимаемыми. Чтобы восстановить заводское состояние программного обеспечения портативного компьютера, просто выполните следующие действия в обратном порядке:
gunzip
. cat
. sudo ddrescue -b 4096 -c 1024 /mnt/laptop-copy.sda / dev / sda
.