Я обычно присоединяю strace
к такому рабочему процессу (с -p $PID
опция), чтобы видеть, остается ли это заблокированным в системном вызове или если это все еще активно.
Или, если Вы чувствуете себя озабоченными отправкой сигнала к выполнению dd, запустите другой dd, чтобы проверить, если это работает.
Можно переключить бакалавра наук и пропустить опции:
dd bs=1131 skip=1 if=filtered.dump of=trimmed.dump
Таким образом, операция может извлечь выгоду из большего блока.
Иначе Вы могли попробовать хвостом (хотя не безопасно использовать его с двоичными файлами):
tail -c +1132 filtered.dump >trimmed.dump
Наконец, можно использовать 3 dd экземпляра для записи чего-то вроде этого:
dd if=filtered.dump bs=512k | { dd bs=1131 count=1 of=/dev/null; dd bs=512k of=trimmed.dump; }
где первый dd печатает свой стандартный вывод filtered.dump; второй просто читает 1 131 байт и выбрасывает их; затем, последние чтения из его стандарта вводят остающиеся байты filtered.dump и пишут им в trimmed.dump.
Можно использовать подоболочку и два dd
вызовы как это:
$ ( dd bs=1131 count=1 of=dev_null && dd bs=4K of=out.mp3 ) < 100827_MR029_LobbyControl.mp3
1+0 records in
1+0 records out
1131 bytes (1.1 kB) copied, 7.9691e-05 s, 14.2 MB/s
22433+1 records in
22433+1 records out
91886130 bytes (92 MB) copied, 0.329823 s, 279 MB/s
$ ls -l *
-rw------- 1 max users 91887261 2011-02-03 22:59 100827_MR029_LobbyControl.mp3
-rw-r--r-- 1 max users 1131 2011-02-03 23:04 dev_null
-rw-r--r-- 1 max users 91886130 2011-02-03 23:04 out.mp3
$ cat dev_null out.mp3 > orig
$ cmp 100827_MR029_LobbyControl.mp3 orig
Еще один способ удалить ведущие байты из файла (без использования dd
вообще), должен использовать xxd
и sed
или tail
соответственно.
bytes=$((1131*2))
xxd -p -c 256 filtered.dump | tr -d '\n' | sed "s/^.\{0,${bytes}\}//" | xxd -r -p > trimmed.dump
bytes=$((bytes + 1))
xxd -p -c 256 filtered.dump | tr -d '\n' | tail -c +${bytes} | xxd -r -p > trimmed.dump
Если длина файла больше, то будет скопирована остальная часть файла.
scp my_log-bin.0139[3-9][0-9] root@192.168.103.66:/backup/
В моей системе это дает 3.5 Гб/с.[116432]. , если файловая система и Ядра Linux поддерживает его, тогда вы можете попробовать Fortocate
Если вы хотите внести изменения в помещении: в лучшем случае нет данных IO вообще:
$ fallocate <magic> -o 0 -l 1131 inplace.dump
где
Зависит от файловой системы, версии Linux и типа файла ( falloc_fl_collapse_range
или Falloc_fl_punch_size | falloc_fl_keep_size
может использоваться внутри ).
Вы должны использовать count = 0
- это простой lseek ()
, когда это возможно.
Примерно так:
{ dd bs=1131 skip=1 count=0; cat; } <filtered.dump >trimmed.dump
dd
будет lseek ()
дескриптор входного файла со смещением 1131 байт, а затем cat
просто скопирует все, что осталось, для вывода.
bs=1131 skip=1
хотя :-/ – Rup 04.02.2011, 02:35