размонтировать SD-карту приводит к изменению контрольной суммы файла

Требование о сохранении нескольких -строковых записей, даже если первая строка соответствует шаблону «игнорировать», добавляло некоторую сложность. В итоге я написал конечный -конечный автомат в Awk для фильтрации HISTFILE после того, как он был записан на диск (. Я не смог найти способ запустить фильтрацию до того, как он уже был записан ).

~/.bashrc:

# if shell is interactive, filter history upon exit
if [[ $- == *i* ]]; then
  trap '$HOME/.bash_history_filter >/dev/null 2>&1 &' EXIT
fi

~/.bash _история _фильтр:

tmpfile=$(mktemp)
trap 'rm -f "$tmpfile"' EXIT

filter_script="$HOME/.bash_history_filter.awk"
persisted_history="${HISTFILE:-$HOME/.bash_history}"

if [[ -r "$filter_script" && -r "$persisted_history" ]]; then
  awk -f "$filter_script" "$persisted_history" > "$tmpfile"

  mv "$tmpfile" "$persisted_history"
fi

Finite-state machine

~/.bash _история _filter.awk:

/^#[[:digit:]]{10}$/ {
  timestamp = $0
  histentry = ""
  next
}
$1 ~ /^(ls?|man|cat)$/ {
  if (! timestamp) {
    print
  } else {
    histentry = $0
  }
  next
}
timestamp {
  print timestamp
  timestamp = ""
}
histentry {
  print histentry
  histentry = ""
}
{ print }

Несколько связанных сообщений(здесь и здесь)наводят меня на мысль, что это также можно сделать с помощью sed. Я еще не разобрался с этим, но мне было бы любопытно посмотреть, как это сравнится.

1
04.11.2019, 19:03
2 ответа

Контрольные суммы md5 двух файлов различаются только в том случае, если различается их содержимое. Вы можете убедиться в этом, сравнив их с командой cmpили diff.

Может быть несколько причин неправильной работы операции копирования:

  1. Отключение SD-карты перед очисткой дискового кеша. Вы можете попробовать использовать udiskctl .

  2. Повреждение файловой системы. Можно попробовать переформатировать карту.

  3. Сбой оборудования.

2
27.01.2020, 23:22

Система не записывает все данные, пока носитель не будет размонтирован. Это обычное поведение со съемными (обычно медленными носителями и флэш-памятью ), поскольку система пытается ограничить количество операций записи.

Визуально , вы можете заметить файловый менеджер (PCManFM, если я хорошо помню... )предупреждает вас об ожидании процесса размонтирования (если у вас есть светодиод для устройства чтения SD-карт, он будет мигать как ад)


EDIT1:вы можете проверить/подтвердить мою теорию, используя команду sync, которая очищает файл -системный кеш

1
27.01.2020, 23:22

Теги

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