Можно сделать что-то вроде:
#! /usr/bin/env python
device = '/dev/sdi'
old_pattern = "MyPassWord"
new_pattern = "XXXXXXXXXX"
assert len (old_pattern) == len(new_pattern)
BS = 1024 ** 2 # 1 Mb buffer
# read a few bytes more to account for occurences of the pattern on the edge
READSIZE = BS + len(old_pattern)
offset = 0
with open(device, 'r+b') as fp:
assert isinstance(fp, file)
while True:
try:
fp.seek(offset)
except IOError:
#print 'offset', offset
#raise
break
buf = fp.read(READSIZE)
occurences = buf.count(old_pattern)
if occurences:
print offset, occurences
fp.seek(offset)
fp.write(buf.replace(old_pattern, new_pattern))
fp.flush()
offset += BS
замены соответствующего имени устройства сверху.
Вы должны запустить скрипт от имени root
и убедиться, что вы перемонтируете устройство по окончании, так как системные буферы содержимого файлов не будут уведомлены об изменениях.
Я думаю, что проблема там DF -H
Один из ваших дисков полностью загружен.
Все, что вам нужно, это LSOF | GreeP удален |. Меньше
Это поможет вам понять, какие файлы были удалены, и «хранится в памяти» процессами.
Для решения вашей проблемы вы должны перезапустить процесс, который удерживает удаленные файлы.